もうそろそろ Lion も出ようかというタイミングでこのハックに気付いた悲しみ。
Mac を常用していると Sleep で作業する比率が増えるんですが、
そうやって uptime を増やしていくと swapfile が増えて超重くなるわけですね。
んで、その処理をしてる dynamic_pager をハックしちゃおうぜってのが↓なわけです。
http://blog.livedoor.jp/dankogai/archives/51101101.html ( Leopard )
Dan Kogai さんのブログですね。
日付がなんと 2008年08月25日 になっています。
つまり2年ちょい前に知っておけよ、な話だったりするわけですよ。
で、これを見て「やったー軽くなるじゃんうっひょー」とか言ってビルドするわけですが、
SnowLeopard の環境だと失敗するわけですね。
そこで Google ですよ!
http://d.hatena.ne.jp/syuu1228/20100523/1274563355
あった。
ビルドも通ったし、自分の環境でも動いてるように見える。
でもこれ lipo で fat-binary にしてないし、
仮に 32bit 環境でビルドしたら 64bit 起動した時に地獄見るんじゃないかな。
怖いなぁ、何か他に方法ないんですかー? なんて考えて
そこで Google ですよ!
http://notohiro.com/?p=1313
あった。
えっ、ちょっ launchctl で disable できるじゃないですかやったー!
早速蹴って swapfile 消して再起動。
普通に動いてるし、swapfile も作られてない。
いい感じじゃないですか!!
と思うじゃん?
ここに設定直前 (数日ほど sleep <-> wake で利用した時 ) のグラフがあります。
Wire に注目。 1GB くらいですね。
で、今回の変更直後 (再起動して常用アプリ立ち上げた後くらい) のグラフがこちら。
嘘みたいだろ‥‥ PageIn してるんだぜ‥‥でも swapfile は生成されてません。
で、Wire のメモリがすでに 1GB 越えてるわけですね。
これってつまり Swap できないから Wire してます的な扱いじゃなかろうか。
メモリ潤沢にあればいいのかなって気はするけど、
swapfile 増えないかわりに Wire が増えるのはちょっと笑えない気がする。
でも今のところ快適だから困った時に考えればいいよね、うん。