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の値を書き込みます。値によって解放されるメモリが異なります。

  1. ページキャッシュ解放
  2. ダーティキャッシュ、inode解放
  3. ページキャッシュとダーティキャッシュ、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 に戻す必要もないようです。

  • ブックマーク : アクセス: 294,177回
  • カテゴリー : Linux
  • キーワード :

コメントはまだありません

No comments yet.

Sorry, the comment form is closed at this time.

33 queries. HTML convert time: 0.077 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン