スリープ中のMacbookの充電が減ってしまう時の対応まとめ よりスリープ時に電力消費が多いと感じる時にすることをまとめました。その中でpmset
でより詳細に設定できるようなので今回はこのpmset
についてまとめてみます。
なお、このパラメータ変更について、アップルサポートでは対応してくれませんでした。 設定によっては、サポート対象外になる恐れもありますので、自己判断でお願いします。
筆者の環境
- MacBook Pro13 2018 Touch Bar付きモデル メモリ16GB
- MacOSバージョン10.14.6 (Mojave)
- 充放電回数 100回程度
今の設定はこう言う事(私ver)
現在の私の設定ですとこうなります。
ディスプレイを閉じる(スリープボタンを押す)
↓↓↓↓
電源が50%以下だと30分までスリープ(直前のセッションはメモリに)
→ 30分以内なら即復帰!
↓↓↓↓
30分を超えるとスタンバイモードに。セッション内容が全てSSDに保存されほぼ電源off状態に (日持ちする)
↓↓↓↓
復帰時にはSSDから読み取るのでチョイ時間かかる。
でもバッテリー消費は以前より抑えられている!(はず)
pmsetて何
Macで設定できる省エネルギー設定では設定できない、スリープ等の詳細なパラメータを設定できるコマンドです。記事を探っていると、MacOSの前バージョンのSierraと現行のMojaveでは少しパラメータが異なるようです。
このコマンドでできる事、各項目についてまとめていきます。
設定の確認と各項目の意味
まず現在の設定を確認します。
オプション
pmset -g #現在の設定値を出力する
-b #バッテリー駆動時の設定を変える
-c #電源接続時の設定を変える
-u #無停電電源(UPS)時の設定を変える これはMacbookに必要なの?
-a #全ての設定を変える
現在の状態の確認なら-g
オプションで出力されます。
また、出力時の駆動状態(バッテリーor電源)で表示が変わるので注意して下さい。
-u
はMacbookの設定では扱わなくても良さそうです(多分
出力例
バッテリー駆動時の出力結果は以下になります。
$ pmset -g
System-wide power settings:
Currently in use:
standbydelaylow 1800
standby 1
halfdim 1
hibernatefile /var/vm/sleepimage
proximitywake 0
powernap 0
gpuswitch 2
disksleep 10
standbydelayhigh 10800
sleep 10
hibernatemode 25
ttyskeepawake 1
displaysleep 10
tcpkeepalive 0
highstandbythreshold 50
acwake 0
lidwake 1
各項目について、説明していきます。
standby
スタンバイモードを有効にするかどうか。1:有効 0:無効
スタンバイについてはスリープ・スタンバイモードとはの項目へ。
standbydelay
バッテリー残量が多いか少ないかで設定を変えられる。high
とlow
があ理、例ではstandbydelayhigh 10800
、standbydelaylow 1800
としています。
この項目では、スリープ状態からスタンバイ状態になるまでの時間を秒単位で決める事ができます。例だと、バッテリー残量が多ければ10800秒でスタンバイ状態に、残量が少ないと1800秒でスタンバイ状態になります。
ここで言うバッテリー残量が多いか少ないかも設定できます。highstandbythresholdで設定可能。
スリープ・スタンバイについてはスリープ・スタンバイモードとは の項目へ。
halfdim
スリープの前にディスプレイ輝度を半分に下げるかどうか。1:有効 0:無効
hibernatefile
ハイバーネートファイル(スリープイメージ)の保管先。バイナリファイルなので見れません。
スリープからスタンバイになる時に、直前の状態をここに書き出す。
proximitywake
1:有効 0:無効
Anyone know what pmset's proximitywake option is meant to do? とかmanを読む限り、同じiCloudIDの端末が近づいたら復帰する?よくわからないから教えて詳しい人。
powernap
パワーナップを有効にするかどうか。1:有効 0:無効
省エネルギー設定でも変更可能。わざわざコマンド叩いて変更しなくて良さそう。
gpuswitch
GPUを複数搭載しているMacに対応している、省エネルギー設定の「グラフィックスの自動切り替え」と同じ。省エネルギー設定に該当欄がないなら飛ばしてどうぞ。
0:integrated(グラフィックス常時使用) 1: discrete(使用しない) 2: auto switch(自動切り替え)
disksleep
省エネルギー設定の「可能な場合はハードディスクをスリープさせる」に当たる設定。
オフにすると0になるが、オンにすると10に変更されるので時間を指定できるみたい。10となっているので単位は秒じゃなくて分だと思われるが、実際はその7割程度でスリープしてしまうとの記事もあった。
一応SSD搭載型でも該当項目があるので、HDDだけの設定ではない様子。書き込みを休ませるとかだと思う。
sleep
多分、スリープに入るまでの時間。単位は分
電源接続時の省エネルギー設定「ディスプレイがオフの時にコンピュータを自動でスリープさせない」にチェックを入れると0になるため。スリープに入るまでの時間だと思われる。基本、ディスプレイが切れたらスリープに入るみたい。
hibernatemode
ハイバーネートモードを設定できる。
0 or 3 or 25
が推奨らしい(manより)
詳しいことは、hibernatemodeでバッテリー消費を抑える で。
ttyskeepawake
リモートログイン時にスリープするかどうか。1:有効 0:無効
displaysleep
省エネルギー設定の「ディスプレイをオフにするまでの時間」に当たる設定。設定単位は分
これも省エネルギー設定から設定可能。
tcpkeepalive
TCPのキープアライブを有効にするかどうか。1:有効 0:無効
多分一般的なTCPのキープアライブの設定だと思われるので、有効にすると、定期的にTCPが有効であるパケットを送信し続けると思われる。バッテリー食いそう。
highstandbythreshold
standbydelayのhigh
とlow
をどこで分けるかを設定できる。例では、50%以上ではhigh
、50%を下回るとlow
の設定が適用される。
acwake
バッテリー駆動 ⇆ 電源接続 が切り替わった時に復帰するかどうか。1:有効 0:無効
刺したり抜いたりしてその都度起こす必要あるんかいな。
lidwake
ディスプレイを開くと復帰するかどうか。1:有効 0:無効
開いてかつボタンを押すまでが復帰のルーティーンだと言う方はオフにしましょう。
値を変更して、バッテリー持ちを良くしていく
例に挙げているのは初期値ではなく変更後の値になっています。この値に変更した理由も含めて解説します。
ここで説明しなかったものは初期値のままです。
変更したのは、standbydelay
,hibernatemode
の2つです。
各値の変更方法
sudo pmset -オプション 変更項目 変更する値
これで変更します。オプションはどの状態の設定を変更するかを決めるものです。オプションで確認してください。
standbydelayを変える
standbydelayより
highstandbythresholdは初期値で50のままなので、ここでは50%以上だと3時間、50%を切ると30分でスタンバイモードに入ります。
スリープ・スタンバイモードとは
Apple公式のページがあるので置いときます。Mac のスタンバイ機能について
今回書いた私のイメージとして
スリープ → 即復帰できるようにメモリに格納されっぱなしの状態。電力消費そこそこ。
スタンバイ → 直前のセッションを別(ハイバーネートファイル)で保存して、復帰時にそこから復元する。保持しない分電力消費低!
です。また、どの程度スタンバイさせるかはhibernatemodeを変えるで決める事ができます。
hibernatemodeを変える
ハイバーネートの設定については二度寝スリープでメモリをガッツリ解放しておく の記事に詳しく書いてありました。長いのでこちらを参照してください。
要点をおさえる(?)とこんな感じ
- 設定値は0 or 3 or 25 以外はやめとけ
- 規定値は3
- 0だと電源offになる
- 3だとギリギリまで保持するけど電源がやばくなったら電源がoff(?
- 25だと直前のセッションがメモリから外部記憶に全て移され電源off
- 25だと復帰時に時間がかかる(理由は上記だから)
つまりSSDでバッテリー持ちを良くしたいなら25でいいじゃん!なので25にしています。
日持ちするようになったのか?
確認しています。実感がでたら具体的な数字を書く予定です。
タイトル最適化になってるけど、最適化か?と思ったけどタイトル思いつかないのでそのままにしますハイ
参考
わからない人は参考読んだらわかるかも
Mojaveにおけるスリープ中のバッテリー消費
pmset で Mac の電源制御 ※記事の情報が少し古いです。
二度寝スリープでメモリをガッツリ解放しておく