Linux のメモリキャッシュをクリアする
2009-9-30 07:00
Linux の top コマンドや free コマンドで表示される cached は、勝手にどんどん増えていきます。free がなくなるとこの cached が少しずつ解放されて使われます。
cached も buffers も空きメモリの一部ですので、これらが溜まっているからといって無理やり解放させる必要は通常はありません。cached を溜めているのはパフォーマンスのためなので、解放させると通常使用時のパフォーマンスが落ちます。逆にこれを解放しておかないと、パフォーマンスの測定などで、正しい計測ができません。
kernel の 2.6.16 以降では、解放をコマンドから解放できるようになりました。root で
# echo 1 > /proc/sys/vm/drop_caches
のように /proc/sys/vm/drop_caches に1~3の値を書き込みます。値によって解放されるメモリが異なります。
- ページキャッシュ解放
- ダーティキャッシュ、inode解放
- ページキャッシュとダーティキャッシュ、inode解放
また上記の echo コマンドによる方法は、次の sysctl コマンドで代替できます。
# sysctl -w vm.drop_caches=3
キャッシュ解放の前には sync コマンドを実行しておいた方が良さそうです。
実際にキャッシュが解放されることを試してみました。
# free total used free shared buffers cached Mem: 1034564 1003368 31196 0 123764 761776 -/+ buffers/cache: 117828 916736 Swap: 2031608 107724 1923884 # sync # echo 3 > /proc/sys/vm/drop_caches # free total used free shared buffers cached Mem: 1034564 240196 794368 0 664 150404 -/+ buffers/cache: 89128 945436 Swap: 2031608 107724 1923884
ちなみに vm.drop_caches の初期値は 0 ですが、0 を代入しても何も起きませんし、わざわざ 0 に戻す必要もないようです。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.