ノートPCのバッテリ駆動時間を伸ばしたい～Windowsの省エネ機能と「最大のプロセッサ状態」設定について

# 本記事の概要
- Windows11には「省エネ機能」のON/OFFに加えて「最大のプロセッサ状態」を設定する項目がある。これらの設定に応じて，ベンチマーク結果がどのように変化するか確認した
- 検証の結果，以下の結論となった
    - バッテリ駆動時間を延ばすためには「省エネ機能」をONにする
    - 「最大のプロセッサ状態」を低い値に設定することで駆動時間をさらに延ばせる可能性がある。しかし，ベンチマークテストの結果からはマルチコア性能が低下するのみであり，動作周波数のピークも大きな差は確認されず，バッテリ駆動時間への寄与は限定的と考えられる


# はじめに
　筆者はもともとThinkPadユーザでしたが，Macbook Air（MBA）が登場してからノートPCはしばらくmacOSで，最後に購入したMBAはIntel Core i5（i5-8210Y）を積んだ2018年モデルでした。その後，Windowsマシンのほうが仕事上都合のよいことが多くなってきたため，2023年にThinkPad X1 Carbon Gen 11のCore i5-1335Uを搭載したモデルに乗り換えました。さすがのThinkPadで，HDMIやUSBポートなど外部機器との接続性はMBAに比べて当然良いですし，キーボードやトラックポイントも安定の使いやすさで，ほとんど不満なく使用できていました。
　しかし，唯一の不満点はバッテリ駆動時間の短さ。製品仕様上はJEITA2.0計測で約28.5hのバッテリ使用時間はとなっていますが，実用はこれに遠く及びません。私の用途（Wi-Fi常時接続，Webブラウジング，Offceツールでの図表を多用した資料の編集，sshでリモート操作，オンライン会議ツールの使用など）では，常駐アプリやサービスをなるべく止めるなど対策を講じているものの6～8時間ぐらいが限界で，2018年モデルのMBAを使っていたときの感覚からしても大分減りが早いと感じます。何とか駆動時間を延ばせないものかと，Windowsの電源関連の設定をいろいろいじくってみた，というわけです。

 # Windows11の電源設定の項目
　Windows11には，稼働中のバッテリ駆動時間に影響する設定項目が主に3つあります。“稼働中”としたのは，今回はあくまでマシンを使用しているときの駆動時間を延ばすことが目的であり，未使用時の自動的なディスプレイ電源のOFFやスリープ移行は関心の対象外だからです。

  - A） 電源モードの設定
  - B） 省エネ機能（24H2より前のバージョンでは「バッテリ節約機能」）の設定
  - C） 電源オプションの電源プラン

　A，Bはいずれも設定画面内の「システム」⇒「電源とバッテリー」における設定項目で，Bについては通知領域の設定メニューでも直接ON/OFFの切り替えが可能です。Aの設定では，「電源に接続」と「バッテリ駆動」のそれぞれについて「最適な電力効率」「バランス」「最適パフォーマンス」の3つのモード選択が可能です。Bは，省エネ機能のON/OFFを切り替えるのみであり，画面内の説明から“一部のバックグランドアクティビティを制限することで、電力消費を削減し、バッテリの寿命を延やす（原文ママ）”ことができます。したがって，<ins>バッテリ駆動時間を延ばすには，電源モードを「最適な電力効率」にして省エネ機能を「ON」にすればよい</ins>ことになります。
　しかしながら，Cの設定もあります。Cはコントロールパネル内にある電源設定であり，古くからのWindowsユーザである私のようなオッサンにはこの項目のほうが馴染み深かったりします。この中の「詳細な電源設定の変更」に「プロセッサの電源管理」という項目があります。この項目は「最小のプロセッサ状態」と「最大のプロセッサ状態」をそれぞれ指定できるようになっており，最大のプロセッサ状態を100%未満の値に設定することで，パフォーマンスは落ちるかもしれませんが，バッテリ駆動時間を延ばせそうに思われます。
 　ここでの疑問は，これらの設定の違いによってパフォーマンスがどう変わるのか，バッテリ駆動時間への影響はどう変化するのかという点です。そこで，これらの設定条件を変えて計測してみました。

# 計測条件
- 仕様マシン：ThinkPad X1 Carbon Gen 11(Core i5-1335U, 16GB RAM, 512GB SSD，14.0 型 2.8K OLEDモデル，BIOSバージョン:N3XET57W 1.32）。BIOSでHyper-Threading TechnologyをOFFに設定
- OS：Windows 11 Pro（24H2)
- ベンチマークソフト：Geekbench 6.4.0 for Windows AVX2
- 計測方法
  - バッテリで駆動させながらGeekbenchのCPUベンチマークにてプロセッサパフォーマンスを計測する。また，フォーマンスモニタを使ってその際のプロセッサ周波数のグラフを得る
  - 電源モードを「最適な電力効率」とし，以下の条件（計4通り）でそれぞれ計測する
      - 省エネ機能：OFFまたはON
      - 最大プロセッサ状態：60％または100％

# 結果
　下表に計測結果を示します。

|条件|Single Core Score|Multi Core Score|
|---|:-:|:-:|
| 条件1（省エネ機能OFF，最大プロセッサ状態100％） |1077|4316|
| 条件2（省エネ機能OFF，最大プロセッサ状態60％） |1085|2970|
| 条件3（省エネ機能ON，最大プロセッサ状態100％） |747|2822|
| 条件4（省エネ機能ON，最大プロセッサ状態60％） |742|2119|

また，参考として，最もハイパフォーマンスな設定，すなわち，

- 電源モード：「最適パフォーマンス」
- 省エネ機能：OFF
- 最大プロセッサ状態：100％

の結果を記載します。

|条件|Single Core Score|Multi Core Score|
|:-:|:-:|:-:|
| 条件5（最適パフォーマンス，省エネ機能OFF，最大プロセッサ状態100％） |2401|8612|

　各条件におけるベンチマーク中のプロセッサ周波数のグラフは次のようになりました。なお，計測開始と終了のタイミングはそれぞれのグラフで若干異なり，1秒前後アイドル時間があります。

|||
|:-:|:-:|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850392/e8d7f783-20b9-412a-afd5-d63fa01e9c28.png" />|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850392/8c47fa62-3114-4d6e-80d8-63bc955fdc20.png" />|
|条件1|条件2|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850392/ea8657c7-b7a1-4260-b86c-cc50daf149af.png"/>|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850392/d591db1e-4331-4ba9-91b9-fedfd6adcf79.png"/>|
|条件3|条件4|
|<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3850392/bc989d01-da62-4439-9bc7-9c68e5f98611.png"/>||
|条件5||

# 考察
- ベンチマークテストの結果について
    - 省エネ機能がONのとき，OFFのときに比べて全体的に低いスコアになった。
    - 最大プロセッサ状態が100％と60％との比較では，Single Core Scoreの値はほとんど差がない。Multi Core Scoreの値は60％のときに100%のときから70%ほど低下している
- 動作周波数グラフについて
    - 省エネ機能がOFFであっても，電源モードが「最適な電力効率」のときは，CPUの動作周波数が最大周波数（4.6GHz)に対して抑えられている（条件1，2と条件5の比較）
    - 省エネ機能がONのとき最大周波数は1.5GHz程度に抑えられている。最大プロセッサ状態60％のときはさらに低くなっているが，ピーク値は条件3のときとほぼ同じであるため，何がしかの作業を継続的に行っているような使い方ではバッテリ駆動時間を延ばす効果はほとんど生じないと考えられる
    - 条件3はベンチマーク時でも周波数の変化が少ないグラフになった。これは，バッテリ駆動時間が使用中に急激に減るような挙動を抑えるかもしれない
    - グラフからは判断しにくいが，最大プロセッサ状態を60％したとき，アイドル時ではなく，ベンチマークを開始してCPU負荷がかかっているときに動作周波数の最小値が記録される結果となった。この制御がどのような機能によるものなのか，本機種の固有のものなのかについて追加の調査が必要である

# 結論
　本検証では，ノートPCのバッテリ駆動時間を延ばす方法を検討するため，Windowsの「省エネ機能」と「最大プロセッサ状態」の設定を変更して，ベンチマークやCPUの動作周波数がどのように変化するのかを確認しました。バッテリ駆動時間を実際に計測したものではありませんが，検証の結果から，

 - 電源モードを「最適な電力効率」にする
 - 省エネ機能をONにする
 - 最大プロセッサ状態を100％未満にする

ことで，CPUの動作周波数を下げることができ，バッテリ駆動時間を延ばす効果が得られると考えられます。しかしながら，<INS>最大プロセッサ状態を100％未満の値にしても，動作周波数のピーク値は100％のときとほぼ同じなので，実業務での使用（何らかの作業を常に行っている状態）においてはほとんど効果がない</INS>と考えられます。
　なお，考察にも書きましたが，最大プロセッサ状態を60％したとき，アイドル時ではなく，ベンチマークを開始してCPU負荷がかかっているときに動作周波数の最小値が記録される現象が確認されました。アイドル時に周波数が抑えられていたほうが，バッテリ駆動時間を延ばすことに寄与しそうです。なぜ，このような挙動が確認されたのかについては追加の調査が必要ですが，いずれにしても上記の結論ですので，私の目的においてこの追加調査はそれほど重要でありません。もしご存じの方がいらっしゃればコメントなどでお寄せいただけましたら幸いです。
 　長文にお付き合いくださり，誠にありがとうございました。