2009年4月16日追記:
どうやら、以下の情報のこの部分
で、デフォルトの状態に戻したいときは0を入れれば良い。
は間違ってる(というか、1:drop_pagecache()とか2:drop_slab()をビット演算で渡すとキャッシュの破棄処理が動くけど、0を入れたって何も起きない)らしい。追記しておく。
ネタ元:続 @ITのmeminfoの見方の説明が完全に間違っている件について
要するに、0なんか書き込んでも無視されているだけである。drop_cachesはいかなる状態も管理なんかしていない。
ただのキャッシュ破棄用のインターフェースにすぎない
まあ、結局試せてないんですけどね...orz
------以下、元の記事内容
色々記事が載ってますな。
どれも結構最近なのはなんでだろう...
■ページキャッシュの強制解放
# /bin/sync
# echo 1 > /proc/sys/vm/drop_caches
#
/proc/sys/vm/drop_cachesの中身を1にすればページキャッシュを解放してくれる
模様。2だとSlabキャッシュを解放したい時、3だとその両方を解放するようです。
で、その際事前にsyncしておいた方が良さそうとのこと。まあメモリ上のデータを
一気に解放するわけだから当然といえば当然か。
#昔リブートするときにsyncを3回繰り返していたのを思い出す...古いなぁ
で、デフォルトの状態に戻したいときは0を入れれば良い。
■デフォルトの状態に戻す
# echo 0 > /proc/sys/vm/drop_caches
で、なんでキャッシュを解放したいかというと、とあるマシンから大量のデータをrsyncしていたらある程度進むとメモリのfree領域がほとんど無くなってkswapdがCPUリソースを99%とか使うようになり、最後はハングしてお亡くなりになる事象が発生していたりする。
ssh使っているのでなんか変なところでリークを起こしてるかデッドロックが
発生してるんじゃないかと推測。
で、ふと気づいた。
このマシン、kernel2.4だわ。orz
(このTipsはkernel2.6.16以降じゃないと使えない)
他人仕様になってるせいで古いOSいれっぱなしだけど、
いい加減新しくOS入れ直すか...。
--------------参考URL--------------------
■ページキャッシュの手動解放 - jitsu102の日記
http://d.hatena.ne.jp/jitsu102/20081105/1225888613
■[Linux]ページキャッシュをクリアする - ぼうずの日常的雑感
http://d.hatena.ne.jp/bowez/20080416
■空きメモリの確保の仕方(メモリーチューニング)(kernel2.6) - 「きまぐれPCひろば」のTOPICS
http://chiji.atnifty.com/topics/?p=16
■Linux+DB2のパフォーマンスチューニング - ThinkIT
http://www.thinkit.co.jp/free/tech/23/10/
■Linux におけるメモリの解放(vm.drop_caches) ( ・∀・)ジサクジエン
http://pooh.gr.jp/item-5477.html
■第1回 減り続けるメモリ残量! 果たしてその原因は!? - @IT
http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html
どうやら、以下の情報のこの部分
で、デフォルトの状態に戻したいときは0を入れれば良い。
は間違ってる(というか、1:drop_pagecache()とか2:drop_slab()をビット演算で渡すとキャッシュの破棄処理が動くけど、0を入れたって何も起きない)らしい。追記しておく。
ネタ元:続 @ITのmeminfoの見方の説明が完全に間違っている件について
要するに、0なんか書き込んでも無視されているだけである。drop_cachesはいかなる状態も管理なんかしていない。
ただのキャッシュ破棄用のインターフェースにすぎない
------以下、元の記事内容
色々記事が載ってますな。
どれも結構最近なのはなんでだろう...
■ページキャッシュの強制解放
# /bin/sync
# echo 1 > /proc/sys/vm/drop_caches
#
/proc/sys/vm/drop_cachesの中身を1にすればページキャッシュを解放してくれる
模様。2だとSlabキャッシュを解放したい時、3だとその両方を解放するようです。
で、その際事前にsyncしておいた方が良さそうとのこと。まあメモリ上のデータを
一気に解放するわけだから当然といえば当然か。
#昔リブートするときにsyncを3回繰り返していたのを思い出す...古いなぁ
で、なんでキャッシュを解放したいかというと、とあるマシンから大量のデータをrsyncしていたらある程度進むとメモリのfree領域がほとんど無くなってkswapdがCPUリソースを99%とか使うようになり、最後はハングしてお亡くなりになる事象が発生していたりする。
ssh使っているのでなんか変なところでリークを起こしてるかデッドロックが
発生してるんじゃないかと推測。
で、ふと気づいた。
このマシン、kernel2.4だわ。orz
(このTipsはkernel2.6.16以降じゃないと使えない)
他人仕様になってるせいで古いOSいれっぱなしだけど、
いい加減新しくOS入れ直すか...。
--------------参考URL--------------------
■ページキャッシュの手動解放 - jitsu102の日記
http://d.hatena.ne.jp/jitsu102/20081105/1225888613
■[Linux]ページキャッシュをクリアする - ぼうずの日常的雑感
http://d.hatena.ne.jp/bowez/20080416
■空きメモリの確保の仕方(メモリーチューニング)(kernel2.6) - 「きまぐれPCひろば」のTOPICS
http://chiji.atnifty.com/topics/?p=16
■Linux+DB2のパフォーマンスチューニング - ThinkIT
http://www.thinkit.co.jp/free/tech/23/10/
■Linux におけるメモリの解放(vm.drop_caches) ( ・∀・)ジサクジエン
http://pooh.gr.jp/item-5477.html
■第1回 減り続けるメモリ残量! 果たしてその原因は!? - @IT
http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01c.html