Thursday, May 26, 2011

[MacOSX] 劇薬 `purge`

最近は2GBしかメモリがないとあっぷあっぷですね…。いい加減4GB以上にしたいんですけど、この前のバッテリー&電源アダプタ購入が痛くてしばらくは無理そうです。とほほ…。

メモリ不足をなんとか誤魔化せないかとメモリ管理(解放)ツールをいくつか試してみたんですけど、どれもあんまりしっくり来なくて…。ターミナルはいつも起動しているんで、どうせならコマンドラインから管理できたらいいなあと思って調べてみたら、`purge`なるものを発見。CHUD Tools(The Computer Hardware Understanding Developer Tools)に含まれているコマンドです。試してみたらビックリするほど解放してくれました。アクティビティモニタで確認してみたら、「現在非使用中」が20MB前後まで激減。ちょっと怖いくらい…(笑)ちなみにpurgeを実行している4、5秒の間は若干動作がカクツキます。

解放するコマンドさえ見つかれば、シェルスクリプトを書くのは簡単。まず、purgeする目安となる空きメモリ量を変数に設定。メモリのチェックでは、topなどを使えば簡単に情報を取得できます(他にも手段はあります)。OSXのtopを使う場合なら、`top -l 1 -n 0 -s 0 | grep '^PhysMem'`みたいな感じでやればメモリの情報を抜き出せます。あとはパイプなりを通してsedとかを利用して"free"の部分を読み取って変数に代入して、最初に設定したメモリ量と比較して、空きが少なかったらpurgeを走らせればいいです。チェックする時間も設定してwhileとsleepで回せば簡易管理スクリプトになります。

ただ、ちょっと調べてみたところ、この`purge`コマンドはメモリ管理に使うべきでないと書いてあるサイトもあったり。2、3日使用してみた限り僕の環境では特に問題はなかったのですが、どの環境・使用法でも安全だと確認できたわけではないのでスクリプトの公開は控えます。まあ…劇薬扱いということで…(笑)purgeを利用してメモリ管理してみたい人は、上に書いたことを参考に自分でスクリプトを書いてみてください。ちなみにAppleスクリプトならGrowlを簡単に利用できるので組み合わせてみると面白いかもしれないですね。僕はAppleスクリプト書かない人間なのでパス。

そんなこんなでしばらくはメモリ2GBで粘ってみるつもりです。

No comments:

Post a Comment