ハンズオン
環境情報
# 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の時間で完了しています。
これがまさに主記憶装置と補助記憶装置へのアクセス速度の違いです。
ページキャッシュを解放するコマンドを投入後に再度時間計測するとまた同じように時間がかかることも併せて確認しています。
以上、キャッシュメモリのアクセス速度の速さを実体験するハンズオンでした。