serversman@vpsでキャッシュの使用量が0と表示される件について
serversman@vpsでfreeコマンドでメモリの使用量を確かめようとすると、キャッシュの使用量が0と表示されます。
> free -m total used free shared buffers cached Mem: 1024 234 789 0 0 0 -/+ buffers/cache: 234 789 Swap: 0 0 0
(ちなみにOSはCentOSです。serversman@vpsではDebianやUbuntuが使えるますが、それらのOSでも同じ現象が発生するかどうかは分かりません。)
メモリを節約するために、キャッシュを行わないようLinuxカーネルのパラメータを変えているのかと考えましたが、もし本当にキャッシュが行われないならば、ファイルを読み込む度にディスクアクセスが発生するので、遅すぎて使い物にならないはずです。
(それともディスク自体も仮想化されているので問題ないのか)
本当にキャッシュが行われていないのかどうかを確かめるために、こちらのエントリで紹介されているプログラムをserversman@vps上で実行してみました。
> ./fincore_min /bin/tcsh pagesize: 4096 filesize: 341068 page num: 84 in memory pages: 0 > cat /bin/tcsh > /dev/null > ./fincore_min /bin/tcsh pagesize: 4096 filesize: 341068 page num: 84 in memory pages: 84
最初は/bin/tcshの内容はメモリに全く載っていませんが、catコマンドでファイルの内容を読み込んだあとは、全てメモリ上に乗っていることが分かります。
つまり、freeコマンドではキャッシュとして使用しているメモリの量が0と表示されるだけで、実際にはキャッシュが効いているということが分かります。
ちなみに、/proc/sys/vm/drop_cachesに書き込みを行ってキャッシュを解放しようとすると、エラーが発生してしまいました。
serversman@vpsではカーネルのパラメータの変更が制限されているようです。
su echo 1 > /proc/sys/vm/drop_caches bash: echo: write error: 許可されていない操作です