ページキャッシュを確認・解放する方法
Linuxには一度ディスクから読んだデータをメモリ上に残しておくページキャッシュという仕組みがあります。
このページキャッシュのおかげで次回から高速に同じディスク上のデータを読むことができるようになっており、ボトルネックになりやすいディスクI/Oのパフォーマンスに貢献しています。
ページキャッシュの確認
メモリの使用量を確認できるfreeコマンドで簡単に確認することができます。
$ free -m
total used free shared buffers cached
Mem: 2015 1599 416 5 28 716
-/+ buffers/cache: 854 1161
Swap: 2047 0 2047
cachedというカラム値が現在キャッシュに使用されているメモリ量になります。
ちなみにfreeコマンドのmオプションは表示単位をメガバイト単位にしてくれるオプションです。
他にも以下のようなオプションがあります。
- -g: ギガバイト単位
- -k: キロバイト単位(オプション指定無しのデフォルト)
- -b: バイト単位
- –tera: テラバイト単位(省略形なし)
- -h: 人間が読みやすいように表示
詳しくはman freeで確認して下さい。
ページキャッシュの解放
ページキャッシュの解放は以下のようにprocファイルシステムに値を書き込むことによって行うことができます。
# echo 1 >/proc/sys/vm/drop_caches
または
# sysctl vm.drop_caches=1
書き込む値の意味は以下のようになっています。
- 1: ページキャッシュの解放
- 2: Slabキャッシュの解放
- 3: ページキャッシュとSlabキャッシュの解放
Slabキャッシュとはファイルやディレクトリに関するメタデータ(付随する情報)のキャッシュとなります。
値を書き込んだ後、以下のようにcachedのカラム値が減少してキャッシュが解放されている事が確認できると思います。
$ free -m
total used free shared buffers cached
Mem: 2015 908 1107 5 0 58
-/+ buffers/cache: 849 1166
Swap: 2047 0 2047
※一時的にシステムが高負荷になったりパフォーマンスが低下する事がありますので、実運用中のサーバでのキャッシュの解放は慎重に行って下さい。(本番で試すような機会はほぼ無いと思いますが…)