man pmset して理解した内容を記録しておく。これが正確かは実際の挙動をちゃんと確認してないのでアレだけど、man 読んでないだろみたいなのよりはマシなはず…

Mac のスリープの種類

  • ディスプレイスリープ
  • スリープ
  • セーフスリープ
  • ディープスリープ

「ディスプレイスリープ」は画面の表示だけ消えている状態。ディスプレイのバックライトが消えて他のスリープと似た状態となるのでスリープの一種としたが、CPUはスリープしない。

「スリープ」はメモリへ電力供給したままCPUをスリープさせている状態。

「セーフスリープ」は「スリープ」と似ているが、来たるディープスリープに向けてメモリ内容を書き出した状態。この状態だと急に主電源消失してもディープスリープからの復帰と同じになるので、作業が失われないという意味でセーフ。復帰はメモリからなので早いが、書き出しがあるのでそこが遅い。

「ディープスリープ」はメモリ内容をファイルシステムに書き出して、コンピュータの全ての電源を切る。次回電源オン時は、ブートプロセスでこのファイルの所在を確認してロードする。コンピュータ全体として消費電力がゼロになる。

メモリ内容を書き出すかどうか、そのタイミングはいつかあたりがポイントになる。メモリ内容を書き出したり、読み戻したりするスリープは、メモリが増えるほど時間がかかることになる。(SSD の場合これによって寿命が縮まることを気にする人もいる)

pmset -g で見れる値との関係

pmset でパワーマネジメントまわりの変数を見ることができる。MacBook Pro で実行すると以下のようになった。

$ pmset -g
System-wide power settings:
 SleepDisabled          0
 DestroyFVKeyOnStandby          0
Active Profiles:
Battery Power           1
AC Power                -1*
Currently in use:
 standbydelay         10800
 standby              1
 womp                 1
 halfdim              1
 hibernatefile        /var/vm/sleepimage
 powernap             1
 gpuswitch            2
 networkoversleep     0
 disksleep            10
 sleep                0 (sleep prevented by iTunes, coreaudiod)
 autopoweroffdelay    14400
 hibernatemode        3
 autopoweroff         1
 ttyskeepawake        1
 displaysleep         10
 acwake               0
 lidwake              1 

「ディスプレイスリープ」はdisplaysleepの値(単位は分)経過後に起こる。

各スリープは sleep の値(単位は分)経過後に起こる。このとき

  • hibernatemode = 0 なら「スリープ」
  • hibernatemode = 3 なら即座に「セーフスリープ」
  • hibernatemode = 25 なら即座に「ディープスリープ」

となる。

ただし「スリープ」や「セーフスリープ」に入っていても、standby = 1 の場合、standbydelay の値(単位は秒)経過後にメモリメージが書き出され「ディープスリープ」に移行する。また autopoweroff = 1 な場合も autopoweroffdelay の値(単位は秒)経過後にメモリイメージが書き出され「ディープスリープ」に移行する。standby との違いがわかりにくいが、standby はバッテリー駆動時の話で、autopoweroff は AC 接続時の話になっている。ErP Lot6 (待機電力基準) 準拠のため、autopoweroff があとから機能として追加されたという感じになっている。

ハイバネーションイメージを作りたくない場合

スリープ入りが遅くてうざい場合

ラップトップだと必ずセーフスリープする関係で、閉じたり開いたりを繰替えした場合になかなか起きてこなくてイラ立つことがある。この場合は常時セーフスリープに入るのがうざいケースなので、hibernatemode だけ 0 にすれば良さそう。

sudo pmset -a hibernatemode 0 

standbydelay / autopoweroffdelay 経過後のスリープはこの意図だと特段無効にする意味はないと思う。

とにかく絶対書き出したくない場合

ハイバネーションイメージからの復帰がそもそも遅いから嫌という場合とか、SSD が痛むのが気になる場合はとにかく無効にするしかない。消費電力が増えるのと、万が一バッテリー切れになった場合は作業内容が失われるのがデメリット。

To disable hibernation images completely, ensure hibernatemode standby and autopoweroff are all set to 0.

と書いてあるので、その通りにする。

以下のようにすると、全ての状況(バッテリだろうがAC駆動だろうがUPS起動だろうが) イメージ書きだしが無効になる。

sudo pmset -a hibernatemode 0 standby 0 autopoweroff 0

ref.

  1. トップ
  2. tech
  3. OS X のスリープの傾向と対策

おれもマインドフルネスするぞ!

認証アプリなどと違って数字を覚えることなしに、ロック解除とダイアログの「はい」を押すだけでよくなるっぽい。

ロックがかかっている端末でも、前もってロックを解除した状態でログインしようとすると、改めてロックコードの確認を求められる。なので、一見「はい」を押すだけでかと思いきや、必ずロック解除を挟む。

確認コードの数字は時間制限があるので、微妙にストレスがかかって嫌な感じでしたが、これはよさそうです。

  1. トップ
  2. tech
  3. Google の新しい2段階認証「Google からのメッセージ」

スリープ復帰時にどうやってもモニタが付かず、モニタの電源を入れなおしたり、ケーブルを繋ぎなおしたりということをしてみた。しかし、どうしてもダメで、ハードリセットをかけた。

DELLのモニタは、バグっておかしくなることはちょいちょいあることだが、電源を入れなおしたりしてもダメだったのは初めてなので、出力側に以上がある?という検討をなんとなくつけた。が、まぁリセットすれば直るだろうという意図だった。

そうするとどうも、何度リセットしてもBIOSの起動画面すら出なくなった。モニタは一瞬起動して、即スタンバイになるような挙動をしていた。主電源を落としてしばらく待ったりしてもダメだった。別のモニタに繋いでもダメなので、モニタの異常ではないという切り分けをした。

そのため、マザーボードまわりの不具合を想定しはじめた。あんまりやりたくはなかったが CMOS クリアを行なった。が、これでもダメで、完全に手詰り感がでてきた。

マザーボード上に2ケタの7セグLEDで起動状況がわかるようになっているのだが、BIOS セットアップ用のキーを押しっぱにすると 99 (スーパーIOの初期化中)、そうではない場合 51 (メモリエラー) となっていた。ここらでマザーボードの故障を疑いはじめ、げんなりしてきた。

故障修理の手続きをやるまえに、まだできることはないかと考えた結果、さらにもう一台別のモニタで検証しようということになった。中華産の低解像度だがHDMI接続のモニタと、短いHDMIケーブルを接続してみたところ、起動シーケンスが表示された。つまりここでようやく、マザー側は問題ないことがわかった。

さすがにここまで検証していた2台のモニタがどちらも壊れているとは考えにくいので、ようやくケーブルを疑い、今まで使っていたケーブルを中華モニタに接続したところ、表示は出るが、コネクタを揺らすと接触不良っぽい挙動をすることがわかった。この中華液晶は自動スタンバイのような気のきいた機能がないため、挙動がわかりやすい。

その後、HDMIケーブルをちょっと動かしてみたりしてひとまずなおった。ただし別途HDMIケーブルを注文して、今のやつは捨てる予定。

トラブルシューティングに時間のかかった原因

最初モニタを疑った段階で、ケーブルの脱着があったため、このタイミングで微妙に接触が悪い状態になったようだ。コネクタは奥まで入っていたので、このとき接触不良まで考えられていなかった。

2台のモニタどちらでもダメだったのが、判断を難しくさせた。このときケーブルは同じものを使っており、コネクタもちゃんと挿せていることまでは確認していたが、そのうえでの接触不良まで疑えていなかった。抜き差しは何度もしてみているので、余計疑っていなかった。

マザーボードのステータスLEDは、正常時の挙動を把握しておらず、99 と 51 が出ることは正常であることを認識できていなかった。99 はBIOSセットアップ画面中にも出るようで、51 はなぜか正常起動でもそういう表示になる。

十分に長いHDMI ケーブルがなぜか手元にそれ1本しかなく、ケーブルを取り替えて検証するのがめんどうだったため、無意識に原因として考慮するのを後回ししてしまった。

対策

  • 接続ケーブルは常に複数本持つこと
  • 「ステータスLED」みたいなものは正常時の挙動を前もって把握すること

オフィスにいるとだんだん体調が悪くなる。15時ぐらいからだんだんひどくなってくる。熱があるかはわからないが(たぶんない)、全身倦怠感がひどい。