Macのスリープについて その2

先日のエントリーでMacのスリープ動作設定を変更する為のシステム環境設定項目 SmartSleep をご紹介しましたが、システム環境設定項目を入れずともMacのスリープモードを切り替える方法を忘却録を兼ねてエントリーにしておこうと思います。

まずMacのスリープ動作について考える。

SmartSleepのエントリーでも記載したのですが、Macには3つのスリープ動作モードがあります。

(a) sleep and hibernate ( Safe Sleep Mode / セーフスリープモード )

pmsetコマンドによる設定No: 3

RAM上の内容をハードディスクに書き込み、保存。
そのため、スリープ中にバッテリー残量が無くなっても、ACアダプターを接続すれば復帰可能。
ただし、RAMの内容を保持する為にスリープ中もバッテリーの電力を使う。
スリープへの移行時にRAM内容をハードディスクに書き込むので少し時間がかかる。
復帰は早い。

(b) sleep only ( sleep mode / スリープモード )

pmsetコマンドによる設定No: 0

RAM上の内容をハードディスクに書き込まない。
よって、スリープ中にバッテリー残量が無くなると、ACアダプターを接続しても復帰不可能。
RAMの内容を保持する為にスリープ中もバッテリーの電力を使う。
スリープへの移行時にRAM内容をハードディスクに書き込まないので高速。
復帰も早い。

Windowsのスタンバイ。

(c) hibernate only ( deep sleep mode / ディープスリープモード )

pmsetコマンドによる設定No: 1

RAM上の内容をハードディスクに書き込み、保存。
そのため、スリープ中にバッテリー残量が無くなっても、ACアダプターを接続すれば復帰可能。
RAMの内容はスリープ移行時に破棄するので、スリープ中はバッテリー電力を使わない。
スリープへの移行時にRAM内容をハードディスクに書き込むので少し時間がかかる。
スリープからの復帰時にも元のRAM内容をハードディスクから読み出すので少し時間がかかる。

Windowsの休止状態。

RAM上の内容をハードディスクへ書き込んだり、読み出す時間はRAM容量によって随分異なりますので、一概に何秒とは言えませんが、ウチの4GB RAM MBPでは10秒以上はかかります。

現在のスリープ動作設定を知る。

まずは、現在の設定が上記のいずれであるかを知る方法です。

[アプリケーション] – [ユーティリティ] – [ターミナル] を起動して、

pmset -g

とタイプしてenterを押します。

色々表示されますが、現在のスリープ動作設定を表しているのは hibernatemode の項目に表示される数字です。

0の場合: 上述の (b) sleep only ( sleep mode / スリープモード )
1の場合: 上述の (c) hibernate only ( deep sleep mode / ディープスリープモード )
3の場合: 上述の (a) sleep and hibernate ( Safe Sleep Mode / セーフスリープモード )

MacBookのデフォルト設定は3 – (a) sleep and hibernate ( Safe Sleep Mode / セーフスリープモード ) の様です。

スリープ動作設定を変更する。

引き続きターミナル上で

sudo pmset -a hibernatemode [No]

とタイプしてenterを押します。
[No]の箇所には 0 か 1 か 3 をタイプします。例えば上述の (b) sleep only ( sleep mode / スリープモード )へ設定を変更したい場合は

sudo pmset -a hibernatemode 0

です。

すると、Password: と表示されますので、ログインパスワードを入力したenterを押します。

ちゃんと設定が変更されたかどうかは pmset -g コマンドで確認出来ます。この設定変更は即座に有効になりますので、Macの再起動は必要ないはずです。

ここで紹介した方法を用いれば、Mac OS Xに標準で入っているターミナルだけでスリープ動作設定を変更する事が出来ます。先日のSmartSleepでも設定変更もそうですが、スリープモードの変更はAppleが公式にサポートしているわけではないので、自己責任で。

Macのスリープについて

Macをお使いの方はご存知の通り、Mac OS Xの省エネルギー設定を見てもさほど詳しい設定はありません。

この様に、操作されてない状態が続いた時どのくらいの時間でディスプレイをスリープさせ、さらにコンピュータをスリープさせるかの設定のみです。ハイバネーション(休止状態 もしくは ディープスリープ – Deep Sleep – )という言葉は一切出てきません。

MacBook系を使っているウチにとって、スリープ状態で持ち運ぶ事で浪費してしまうバッテリー残量は大きな悩みでした。そこで見つけた便利そうなシステム環境設定項目を紹介してみます。

SmartSleepです。フリーのシステム環境設定項目です。
ダウンロードしてインストールすると、システム環境設定にアイコンが追加されます。

早速クリックしてみると、最初は設定が変更出来ない様にロックされていますので、左下のカギをクリック、パスワードを入力して設定変更出来る様ロックを解除します。

デフォルトでは「sleep and hibernate」の設定になっていると思います。このSmartSleepがすばらしいと感じたのは、ディスプレイを閉じたときの挙動を好きな設定へ変更出来る事と、バッテリー残量が多いときはスリープ(スタンバイ)になるけれど、バッテリー残量が設定した値より低い場合にスリープ&ハイバネーション(スタンバイ&休止状態)に移行してくれる「smart sleep」という設定がある事です。

ターミナルを用いてコマンドを実行すれば同等の設定は出来ますが、フリーのシステム環境設定で手軽にMacの眠り方を設定出来るのは便利です。

  • sleep and hibernate:
    標準の設定です。ほとんどsleep onlyと同じで、RAMの内容を保持する為にバッテリーが常に消費されています。さらに、スリープへ移行する時にRAMの内容をHDDへ書き出し、万が一完全にバッテリー残量が無くなった場合、その後ACアダプターを接続するとハイバネーションから復帰します。
  • sleep only:
    スリープに限定します。よって、RAMの内容を保持する為にバッテリーが常に消費されます。ただし、スリープへの移行も復帰も高速で、ディスプレイの開閉で瞬時に移行出来ます。
  • hibernate only:
    ハイバネーションに限定します。RAMの内容をディスクへ保存するのでバッテリーは全く消費されません(シャットダウンしたのと同じ)。ただし、RAMの容量にもよりますが、ハイバネーションへの移行時にRAMの内容をハードディスクへ書き出す時間がかかり、復帰も同様にディスクからRAMへ読み出す時間がかかります。
  • smart sleep:
    このオプションを選択するとどのレベルに達したら”sleep and hibernate”動作をするか指定するバーが表示されます。デフォルトは20となっており、バッテリー残量が20%以上又は20分以上の場合はsleepし、それ以下の場合はsleep & hibernate動作。さらにバッテリー残量が5%もしくは5分以下になるとhibernate動作します。

バッテリーの残り残量重視であればhibernate only。スピード重視であればsleep only。どちらもという場合はsmart sleepという設定に使えそうです。

個人的に求めていたのはsmart sleepで、設定した値以下になった場合に”sleep & hibernate”動作ではなく、”hibernate only”動作をして欲しかったのが惜しいですが…。こちらについては作者へ直接問い合わせてみたいと思います。

ちなみにこのSmartSleep、ユーザが選択したモードにあわせてconfigdコマンドを使って/Library/Preferences/SystemConfiguration/フォルダにあるcom.apple.PowerManagement.plist設定を変更している様です。このplistファイルにあるhibernate modeの値を色々変更する事で、同等の設定をすることができます。こちらは別の機会に紹介してみたいと思います。

[Mar/25/2010追記]

早速SmartSleepの作者、Patrick氏にメールで ‘smart sleep’ において、バッテリー残量が設定した値以下になった場合にハイバネーションへ移行する機能について提案したところ、以下のような回答を得ました。

A different slider for the hibernation level is what I had in mind for version 3.0

まだまだ忙しく、Version 3.0の登場までは時間がかかりそうですが、次期バージョンが楽しみです。