【Linux】メモリのキャッシュをクリアする
問題
メモリーのcachedを解放したい。
$ free
total used free shared buffers cached
Mem: 1026840 1014088 12752 0 119300 681588
-/+ buffers/cache: 213200 813640
Swap: 2003960 2176 2001784
答え
以下のコマンドで可能(rootで)。
# echo 1 > /proc/sys/vm/drop_caches
/proc/sys/vm/drop_caches に1~3の値を書き込む。
値によって解放されるメモリが異なる。
値 | 対象 |
---|---|
1 | ページキャッシュを解放する |
2 | dentry、inode を解放する |
3 | ページキャッシュ、dentry、inode を解放する |
この操作は非破壊的な操作で、ダーティな (dirty) オブジェクトは 解放されないので、この操作を行う際は最初に sync(8) を実行しておくべきである。
(dentryとは、ファイル名、ディレクトリ階層構造、キャッシュ管理などをおこなっているデータ。)
cachedやbuffersはLinuxが効率的に動作するために空いている領域を使っているだけで、通常は空きメモリと考えてよい。
パフォーマンスの測定などで、キャッシュがない状態から測定したいときなどには開放したい。そんなときにどうぞ。
参考
対応しているのは Linux 2.6.16 以降。
http://linuxjm.sourceforge.jp/html/LDP_man-pages/man5/proc.5.html
コメント