2008年08月25日 06:30 [Edit]

Mac OS X Leopard - dynamic_pager を骨抜きに

OS X で一ついやなものは、swapping.

もちろんパートナーでなくて、実記憶と仮想記憶の、ね。


現在私が使っている MacBook Pro には、4GBのRAMが乗っている。滅多なことではswapしないと思いきや、する時にはする。特に VMWare Fusion を使うようになってからは。VMWareが提供するのは仮想マシンだけど、仮想マシンも物理メモリーを必要とするのだし。

問題は、メモリーを食っているアプリケーションを終了しても、一度 swap out されたプロセスたちが実メモリーには戻ってこないこと。んで、一つでもswap outされているプロセスがあれば、/var/vm/swapfileN はそこに居続ける。最低一個はあるのだけど、これがいくつも出来るようになると、システムは大変のろまなものになってしまう。

このあたりは他のUnixも同じなのだけど、 Mac OS X の場合、専用のパーティションではなく通常のファイルシステムにスワップファイルを作るところが違う。これのおかげで専用パーティションなしでも仮想記憶が使える一方、一度出来たスワップファイルは滅多なことでは削除されないということになってしまう。

でも、メモリーを何GBも積んでいても、スワップがありうるというのはやはりいやだ。

と考えたのは私だけではないらしくて、こんなHackをした人がいた。

Killing Mac OS X Swapping : How To Disable dynamic_pager - cestdelamerde.com
If like me you cannot deal with the swapping in OS X, and if you have tried everything possible, even not to launch dynamic_pager (and you've seen that you're system is not usable anymore (on my mac the 2Gb was detected but the system was refusing to use more then 1Gb :-( )), then I have the solution : create another dynamic_pager that fits your needs :-P

試してみると、これがきちんと機能する。その証拠に、わざとメモリーをたくさん使うようにすると

% grep pager /var/log/system.log
Aug 25 05:58:25 XXXXXXXX kernel[0]: (default pager): [KERNEL]: no space in available paging segments

というメッセージが現れるし、/var/vm/swapfile0 以外のスワップファイルは作られない。

というわけで、この作業を少し洗練させてみた。

Makefile

使い方は以下の通り。

  1. Xcodeをちゃんとインストールしておく。
  2. 適当にディレクトリーを作る
  3. そこに上のMakefileをおく
  4. make
    sudo make install
    
  5. 再起動
  6. 一応make uninstallもできるようにしてある

お楽しみは各自の責任においてお願いします。

Enjoy @ your own risk!

Dan the Leopard Tamer

追記: OS X でも FreeBSD みたく

swapoff -a
swapon -a

という技が使えればいいのに。


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:Mac OS X Leopard - dynamic_pager を骨抜きに
404 Blog Not Found:Mac OS X Leopard - dynamic_pager を骨抜きに【】at 2012年01月17日 05:22
dan kogai氏のblogに書かれてたswap抑制ハックネタ(404 Blog Not Found:Mac OS X Leopard - dynamic_pager を骨抜きに)だが、ここに乗ってるMakefileをそのまま使ってコンパイルしようとするとSnow Leopardでは失敗する。 10.4 SDKが存在しないからだ。 なので、直した。
[Apple][MacBook]dynamic_pager hack on Snow Leopard【驟雨のカーネル探検隊(只今遭難中w】at 2010年05月23日 06:23
 馬鹿なことをやらかしてOSを再インストールする羽目になり、買ったばかりの時はMacのことなどよく分からず、ただJobsの思うがままにされていましたが、だいぶMacのことが分かってきてちょうどいいタイミングなのでまた一から自分の思い通りに設定などをやりなおしてみよう....
Mac軽量化の方法いろいろ【iPhone向けサイトを考える】at 2009年03月16日 07:20
MacOS X Leopard - dynamic_pager を骨抜きに を...
dynamic_pagerを入れ換えてSwapの抑制(とSwapの移動)【オレのメモ(仮)】at 2009年03月11日 20:29
入院していたMacBook Pro(2008 Early)が戻ってきました。  ...
退院しました【ejwt -BLOG版-】at 2008年11月06日 22:29
昨日、なんとなく見ていた「2ちゃん地図」が秀逸だったので乗せておくとともに、最近、我が iMac で気になることがいくつか。 「MAME OS X」のできばえがすばらしいので、魔界村にはま...
Mac OS X(Leopard) で、swap しない(dynamic_pager off) ようにしてみた。【oshiire*BLOG】at 2008年10月04日 22:43
アップル第4世代「iPod nano」のファーストインプレッション読売新聞Appleの「iPod nano」の薄くて丸みのある新しいディスプレイのリーク画像を最初に見たとき、正直なところ、疑わしいと思っていた。第1、第2世代のiPod nanoのデザインに戻るのはAppleらしくなく、ゆるやか....
アップル コンピューター【ロードニュースター ポルトフィーノ ルールプロスパー 】at 2008年09月11日 17:59
マックを初めて使う人からよく聞かれるのでTIPSに入れておきます。
macでwindowsで言うところのprintscreen【クリエーター達の独り言】at 2008年08月27日 22:11
dankogai御大様々より。Mac OS X の dynamic_pager をほげるという荒技。 このあたりは他のUnixも同じなのだけど、 Mac OS X の場合、専用のパーティションではなく通常のファイルシステムにスワップファイルを作るところが違う。これのおかげで専用パーティションなしでも
スワップザッパー【がこんがこんぶごる】at 2008年08月26日 20:02
この記事へのコメント
snow leopardをまだ買っていないので、わからないのですが、改善されているのでしょうか?
Posted by phi at 2009年11月02日 13:00