SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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

関連するメモ

コメント