Kodama's home / tips.
ディスク装置に組み込まれたバッファキャッシュと, 主メモリーの空いた部分にとるバッファキャッシュの2段階があることに注意. 通常は気にする必要は無いが, 能力の測定でファイルの読み書きを行う場合などに影響する.
Linux では, 主メモリーの空いた部分をディスク入出力のバッファキャッシュに使って入出力を効率化している. (メモリ−が足りない?), ディスクへの書き込みがある場合, 空きメモリーにとりあえず置いて, 後でまとめてディスクに書き込むようになっている. 読み込みの場合も, 先に適当に読み込んでおいて利用の要求に対処する準備をしている.
# free total used free shared buffers cached Mem: 3089088 2999204 89884 0 233608 2132124 -/+ buffers/cache: 633472 2455616 Swap: 5863684 12 5863672この例では 空きメモリー(free)が 89884 と少なく見えるが,(単位は 1k bytes) 実際には 2455616 あり, その空きを buffers(233608) と cached(2132124) に割り振って有効利用している.
上記の主メモリー中のバッファキャッシュとは別に, ディスク装置の中には, コンピュータとのデータ通信と ディスクの回転待ちやヘッドの移動待ちなどのタイミングの違いを調整するため, バッファが組み込まれている.
このように, コンピュータとディスクの間には少なくとも 2段階のバッファが介在しているので, この影響を見積もるのは簡単ではない.
# sync ; echo 3 > /proc/sys/vm/drop_caches
キャッシュの状況は free で見える.
# free total used free shared buffers cached Mem: 3089088 2999204 89884 0 233608 2132124 -/+ buffers/cache: 633472 2455616 Swap: 5863684 12 5863672主メモリーtotal(3089088) のうち cached(2132124) と buffers(233608) への割り当てが大きいため, フリーメモリーfree(89884)が少なく見えるが(単位は 1k bytes).... buffers と cached への転用を考慮した数値は -/+ buffers/cached の項に書かれている. これで見るとかなり余裕がある. (メモリ−が足りない?), キャッシュを開放すると...
# sync ; echo 3 > /proc/sys/vm/drop_caches # free total used free shared buffers cached Mem: 3089088 235620 2853468 0 272 48000 -/+ buffers/cache: 187348 2901740 Swap: 5863684 12 5863672バッファ キャッシュだけでなく, プログラムに割り当てて used になっていたメモリーの一部も, システムに回収されています.
# sync ; echo 3 > /proc/sys/vm/drop_caches ; hdparm -f /dev/sda
ページキャッシュのメモリー使用率を調整して, メモリの再利用を促進するには. /proc/sys/vm/dirty_background_ratio /proc/sys/vm/dirty_ratio の値を小さくする. ここはあまりいじらないで, デフォルトで良いと思うが?
/proc/sys/vm/dirty_expire_centisecs(ダーティなデータの保持時間, 単位は 1/100秒). この値より長時間メモリ上に存在するダーティなデータはpdflushによってディスクに書き出される. (デフォルトは30秒)
# cat /proc/sys/vm/dirty_writeback_centisecs 500 # cat /proc/sys/vm/dirty_expire_centisecs 3000
# echo 50 > /proc/sys/vm/dirty_writeback_centisecs # echo 300 > /proc/sys/vm/dirty_expire_centisecs又は /etc/sysctl.conf内に以下を記述する:
vm.dirty_writeback_centisecs 50 vm.dirty_expire_centisecs 300
Kodama's home / tips.