Macがスリープから復帰するのが遅い場合の対処法

Macを開いてスリープから復帰させた際に、マウスカーソルだけがぽつんと表れて、画面がなかなか表示されないという現象に遭遇したことはありませんか?その場合、スリープ時に問題が発生している可能性があります。

そもそもMacのスリープとは何なのか、そこからまずは入り込んでいき、最終的に問題の根本を探ることにしました。

Macのスリープは3種類存在する

まず、Macのスリープには3種類存在することをご存知でしたか?ターミナルを開いて以下のコマンドを実行してみてください。

pmset -g

以下のような結果が得られたでしょうか。

Active Profiles:
Battery Power		-1*
AC Power		-1
Currently in use:
 standbydelay         10800
 standby              1
 halfdim              1
 hibernatefile        /var/vm/sleepimage
 darkwakes            0
 gpuswitch            2
 disksleep            10
 sleep                1
 autopoweroffdelay    14400
 hibernatemode        3
 autopoweroff         1
 ttyskeepawake        1
 displaysleep         2
 acwake               0
 lidwake              1

Battery Powerの横の*は、Macがバッテリー電源で駆動中であることを表しています。pmsetコマンドの結果に表示されている数値は全てバッテリー駆動時のものです。

さて、このhibernatemodeがスリープの種類を表していて、MacBookの場合は「3」が初期設定となっています。このhibernatemodeには以下のような意味があります。

hibernatemode モード メモリの状態 ディスクへの保存 消費電力
0 Sleep 維持 しない
3 Safe Sleep 維持 する
25 Deep Sleep 破棄 する

Sleepモード、Safe Sleepモードの場合、メモリの状態を維持しますが、休止状態になると、その内容は破棄されてしまいます。また、Safe Sleepモード、Deep Sleepモードの場合、メモリの状態をファイルへ書き込みを行うため、休止状態になった場合でも、ファイルの内容から状態を復元することができます。

ファイルへの書き込み、読み込みが発生するSafe Sleep、Deep Sleepモードの場合、スリープおよびスリープからの復帰に時間を要します。ただし、Safe Sleepモードの場合は、メモリの状態も維持しているため、休止状態になっていなければ高速な復帰が可能です。

メモリの状態はどこに保存される?

デフォルトの保存先は/var/vm/sleepimageです。pmsetコマンドの実行結果にあるhibernatefileがイメージファイルの保存場所を表しています。

$ ls -l /var/vm/sleepimage 
-rw------T  1 root  wheel  1073741824  9 18 08:29 /var/vm/sleepimage

その他の内容について

pmsetコマンドで表示されるその他の内容について確認しておきましょう。

項目 説明
standbydelay ディスクにメモリの状態を書き込み必要のあるSafe Sleep、Deep Sleepモードの場合の、ディスクをスリープさせるまでの遅延時間(秒)
standby スタンバイを行うかどうか(0:スタンバイオフ、1:スタンバイオン)
halfdim ディスプレイがスリープ状態になる前に輝度を下げるかどうか(輝度を下げない:0、輝度を下げる:1)
darkwakes バッテリー電源使用時にPower Nap(スリープ中にバックグラウンドで新着メール等のタスクを実行する)をオンにするかどうか(Power Napをオフ:0、Power Napをオン:1)
gpuswicth 不明(調査不足。GPUに関連するフラグと思われる)
disksleep ディスクをスリープさせるまでの時間(分)
autopoweroffdelay スリープから休止状態になるまでの時間(秒)
autopoweroff 休止状態を使用するかどうか(0:使用しない、1:使用する)
ttyskeepawake リモートセッションがアクティブの場合にスリープするかどうか(0:スリープする、1:スリープしない)
displaysleep ディスプレイをスリープさせるまでの時間(分)
acwake 電源が変更されたら(バッテリー駆動からACコンセントなど)スリープを解除するかどうか(0:解除しない、1:解除する)
lidwake ディスプレイを開いたときにスリープを解除するかどうか(解除しない:0、解除する:0)

設定値を変更するためには?

これらの設定値を変更するためには、同様にpmsetコマンドを使用します。

$ sudo pmset -a [項目名] [値]

例えば、スリープモードについて、休止状態になった場合に内容が失われても良い場合は、「Safe Sleep」から「Sleep」に変更することでより高速なスリープを実現できます。

$ sudo pmset -a hibernatemode 0

スリープ状態から復帰時の問題

さて、前置きが長くなりましたが、冒頭のようにスリープ状態からの復帰時に黒い画面にマウスカーソルだけぽつんと表示されてしまい、なかなか復帰しないことがありました。このような時にはスリープに問題が発生している可能性があります。ターミナルで以下のコマンドを実行してみましょう。(一時的にテキストファイルにリダイレクトすることをオススメします)

pmset -g log

これで電源管理(スリープ、休止)に関するログが出力されます。その中から「Timedout」を探します。

2014/09/18 21:38:10 JST  Sleep               	Idle Sleep: Using BATT (Charge:57%)                                        	673 secs  
2014/09/18 21:38:11 JST  SlowResponse        	PMConnection: Response from mDNSResponder is slow (powercaps:0x0)          	          614 ms    	
2014/09/18 21:38:11 JST  WakeRequests        	Clients requested wake events: None                                        	          
2014/09/18 21:49:23 JST  DarkWake            	DarkWake [CDN] due to EC.LidClose/Maintenance: Using BATT (Charge:57%)     	          
2014/09/18 21:49:23 JST  HibernateStats      	hibmode=3 standbydelay=10800                                               	          rd=224 ms 	
2014/09/18 21:49:23 JST  Timedout            	Kernel: Response from Creative Cloud timed out (powercaps:0x9)             	          30000 ms  	
2014/09/18 21:49:23 JST  Timedout            	Kernel: Response from Adobe CEF Helper timed out (powercaps:0x9)           	          30000 ms  	
2014/09/18 21:49:23 JST  Sleep               	Maintenance Sleep: Using BATT (Charge:57%)                                 	2014 secs 
2014/09/18 21:49:23 JST  WakeRequests        	Clients requested wake events: None                                        	          
2014/09/18 22:22:57 JST  Wake                	Wake [CDNVA] due to EC.LidOpen/Lid Open: Using BATT (Charge:56%)           	          
2014/09/18 22:22:57 JST  HibernateStats      	hibmode=3 standbydelay=10800      

Adobe Creative Cloudが原因で30,000ミリ秒(30秒)間待機していることがわかります。最近、Adobe製品を触る機会はめっきりなくなったので、Adobe Creative Cloudは真っ先に削除しました。

それ以来、スリープ状態からの復帰は今まで通りの早さを取り戻しました。スリープで問題を抱えている場合は是非お試しください。

参考リンク

以下のサイトが大変参考になりました!

スリープに関する知識まとめ – ザリガニが見ていた…。

前回、よく眠る MacBook にする過程で得た知識を忘れないようにメモ。 マシン環境 以下のスリープに関する知識は、上記のマシン環境で可能な限り確認した。 ところで、スリープの仕様は、機種ごとのパワーマネジメントの仕様に左右される。 パワーマネージメントの仕様は、ハードウェアの仕様とも密接に関係している。 例えば、初代MacBookは、Wake on Demand がサポートされていない。 また、最新のMacBook Airには、deepsleepdelayなんていう設定項目もある。 そのため、以下の知識を試すと、機種によっては書いてあることと違う動作をすることもあるかもしれない。 実際に試す場合は、電源オフされても大丈夫な心構えが必要。 Wake on Demandとは Wake on Demandを有効にする条件 MacBook側と無線LANのベースステーション側が対応していること。SnowLeopardリリース以降に発売されたハードウェアなら対応しているはず。(それ以前でも対応している機器は多い) MacBookのシステム環境設定 >> 省エネルギー >> 「ネットワークアクセスによってスリープを解除」チェック入りの状態。 ディスプレイを開いた状態でスリープすること。(閉じてはダメ) AC電源アダプタから給電されていること。(バッテリー駆動ではダメ) つまり、ディスプレイを開いた状態でスリープしておけば、最近のマシンはスリープ中でも共有サービスが利用可能なのだ。 共有サービスとは…

この記事が気に入ったら
いいね ! しよう

Twitter で