Skip to content

MacOSXの電源設定周りメモ

2014年5月9日

# pmset -a hibernatemode 0 でスリープからの復帰が早くなります!
他に3や25があります!
……そんなブラックボックス的に設定しても、痛い目見るのはわかっているので、manpageを確認。 そのメモ

manpage(November 9, 2012)によると、 pmset(1)はパワーマネジメント設定を行うコマンドである。

対象とするプロファイル

オプション -a,-b,-c,-uは、変更するプロファイルを選択する。

-a すべてのプロファイル
-b バッテリー稼働時
-c AC電源供給時
-u UPS供給時(UPS接続時?)

特に意識することもないと思い、以降の設定は、-a(バッテリー運用、AC電源供給時)に対し行う。

hibernatemode

さて、ネット上で特に言われるのが、”hibernatemode”について。
SAFE SLEEP ARGUMENTSの項では、hibernatemodeが8ビット整数で表現されているような書き方をしている。

0ビット
(LSB ※普通LSBは1ビット目ではないのか……?)
ハイバネーション有効無効
メモリの状態をスリープ時、1ビット目が無効なら直ちにストレージに書き込む。
復帰時(1ビット目無効時)はハイバネーションイメージから行う。
1ビット システムの状態をメモリに維持、
バッテリーレベルが「バッテリー残量低下しきい値」を超えた場合、ハイバネーションに入る。
バッテリーが残っている場合はメモリから、しきい値を超えた場合はハイバネーションイメージから復帰。
3ビット ハイバネーション時にダイナミックページャ?が走り
(メモリ圧縮やページアウトを発生させる?)
メモリ使用量を減らす
4ビット アグレッシブにメモリ容量を減らす

ただ、この設定を変更することは推奨されておらず、自己責任。
さらに、0,3,25以外を利用しないようにとも記述がある。
(For your sake and mine, please don’t use anything other 0, 3, or 25.)

  • 0 : デスクトップでのデフォルト。メモリの内容をストレージに書き出さず、メモリの内容から復帰。電源が失われると内容も失われる。
  • 3: ポータブル用途でのデフォルト。 ストレージにメモリの内容を書き出し、スリープ時はメモリに電源が供給される。復帰時はメモリから行われ、電源が失われるとハイバネーションイメージから復帰する。
  • 25: pmset(1)でのみ設定可能。 メモリの内容をストレージに書き出し、メモリの電源供給を停止する。復帰はハイバネーションイメージから行われる。バッテリー稼働時間を伸ばす場合はこの設定を使うとよい。

すなわち、

モード ストレージ書出 メモリ電源 復帰元 備考
0 通電 メモリ 電源消失時(バッテリー残量なし)は内容がロストするが、
復帰は早い
3 通電 メモリ。
ただしバッテリーしきい値を超えると
ハイバネーションイメージから。
ストレージにも書き込むため、電源がロストしても復帰可能。
ただしストレージの書き込みが発生するため、モード0より低速。
25 遮断 ハイバネーションイメージ 常にストレージから復帰する(せざるを得ない)ため低速だが、
最も電力を消費しない

となる。

ここでわからないのが、バッテリー残量低下のしきい値はドコに格納されているかというもの。
thresholdでgrepかけても出てこず。 ハードコード?

MacBook AirのSSD寿命を気にして hibernatemodeを0にしても良いが、
バッテリーの減りによるバッテリーの寿命のほうが先に来ると思うし、そこまでSSDはヤワじゃないと思う。
ときどきハイバネーションイメージの出力先であるhibernatefileを、/dev/nullとしている記事をみかける。
この状態でhibernatemodeを3にしてもあんまり意味がない……
詳しくはSSD耐久テストを参照。

standby

スリープした際、<standbydelay>秒経過時にストレージにメモリの内容を書き込む。
これはhibernatemodeが3または25のときのみ動作する。

autopoweroff

スリープ後<autopoweroffdelay>分を超えると、メモリの内容をストレージに書き込み、
chipset sleep?に入る。通常のスリープよりも時間がかかるものの、電源がオフにならない。

ストレージへの書き込み条件

おそらく、

  • hibernatemodeが3か25のときで、スリープ後<standbydelay>秒経過時
  • スリープ後、<autopoweroffdelay>分経過時 (hibernatemodeに関係なく)

の2点。

図にすると

MacOSXがスリープ時、いつストレージにメモリの内容を書き出すかを表した図

MacOSXがスリープ時、いつストレージ(図では”ディスク”)にメモリの内容を書き出すかを、hibernatemodeごとに表した図。それぞれの条件はいずれか1つ満たすと書き出しが行われる。

SEE ALSO

SEE ALSOでは caffeinate(8)を挙げている。システムがスリープになるのを妨げるコマンド。
説明は省略する。

 

広告

From → MacOSX

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。