sleepimageをなんとかしたい?

swapの制御は、1つ前の記事でなんとかできたのだけど、swapと同じディレクトリには超巨大な
sleepimageというファイルがある。

MacBook:~ kinneko$ ls -lh /private/Var/vm/ | grep sleepimage
-rw------T  1 root  wheel   8.0G  1  8 09:11 sleepimage

SSDで使っている場合には、こいつもやっかいなサイズだ。
なんとかならないか。


sleepimageってのは、スリープしたときの復帰用のスナップショット。
蓋を閉じてスリープに入った時、MBAとMBPでは動きが少々異なる。
MBAでは、スリープに入ると、まずRAMを給電したまま状態を保持するsuspensionモードに入る。
指定した一定時間が経過すると、RAMの状態をHDDにスナップショットして、RAMの電源も落としてしまうhibernationモードに入る。
MBPでは、suspensionなしに、hibernationになるようだ。
リスクを承知でsleepimageを作らないようにするには、suspensionモードに固定してRAMを落とさないようにしたらいい。
以下で切り替え。

$ sudo pmset -a hibernatemode 0

hibernationのみにするときは1、二段階に戻すときは3。
現在の状態は、pmsetコマンドで確認できる。
10.6だとこんな感じ。

MacBook:~ kinneko$ pmset -g
Active Profiles:
Battery Power		-1
AC Power		-1*
Currently in use:
 hibernatemode	3
 halfdim	0
 lidwake	1
 acwake		0
 womp		0
 sleep		0
 disksleep	10
 sms		1
 hibernatefile	/var/vm/sleepimage
 ttyskeepawake	1
 displaysleep	30

deepsleepdelayとか項目がないな。
ということは、設定3でも、いきなりhibernationモードになっているということか。
設定値はpmsetのmanによると、0, 1, 3, 4, 25がある。
25だとHDD退避後に電源オフになる。
3と25は、それ以外にも、使っていないメモリ領域については積極的にページアウトする(swapファイルに逃がす)ようなポリシーになっているようだ。これで、sleepimageの書き込み量を抑制できる。ただ、sleepimageのサイズはRAMと同じサイズになるようだ。
以下のように、0,3,25以外は推奨されていない。

We do not recommend modifying hibernation settings. Any changes you make
are not supported. If you choose to do so anyway, we recommend using one
of these three settings. For your sake and mine, please don't use any-
thing other 0, 3, or 25.

sleepimageはシステムのあるボリュームにしか置けないようだ。

Please note that hibernatefile may only point to a file located on the
root volume.

MBAのようなシステムでは、ストレージが限られるので、移動したいところだが残念。