(O+P)ut

OutPut Log by SE in SIer



(O+P)ut

Output Log by SE

【Linux】キャッシュメモリの速度を実感する

スポンサーリンク

ハンズオン

環境情報
# cat /etc/os-release | head -n 1
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"

100MBのファイルを作成する

# dd if=/dev/zero of=100mbfile oflag=direct bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 2.7764 s, 37.8 MB/s

ファイルを確認する

# ls -lh
total 101M
-rw-r--r-- 1 root root 100M XXX 100mbfile

ファイルを読み込み時間を計測する

# time cat 100mbfile > /dev/null

real    0m1.438s
user    0m0.000s
sys     0m0.064s

再度読み込む

# time cat 100mbfile > /dev/null

real    0m0.060s
user    0m0.004s
sys     0m0.052s

キャッシュをクリアして再度読み込む

# echo 1 > /proc/sys/vm/drop_caches

# time cat 100mbfile > /dev/null

real    0m1.446s
user    0m0.004s
sys     0m0.052s

以下、補足です。

補足

ファイルの読み込みにおけるページキャッシュの高速さを実感できます。

最初のddコマンドでファイルを作成していますが、全てNULL文字でサイズが100MByteのファイルを作成しています。

以下のようにNULL文字が永遠と書き込まれるファイルで、テスト用に大きなファイルを作成する際にたまに使うので覚えておくと良いと思います。

# cat 100mbfile | wc
      0       0 104857600

その後は連続してcatコマンドでファイルを読み込みますが、二度目は約1/20の時間で完了しています。
これがまさに主記憶装置と補助記憶装置へのアクセス速度の違いです。

ページキャッシュを解放するコマンドを投入後に再度時間計測するとまた同じように時間がかかることも併せて確認しています。

以上、キャッシュメモリのアクセス速度の速さを実体験するハンズオンでした。


他の記事を読む