Surface Proは性能はよいのですが、電池が4時間半しか持たないと一部で評判です。本当に4時間半しか持たないのか? 何とかする方法はないのか? を探りました。結論から言えばデフォルトの設定では4時間半しか持ちませんが、設定次第では稼働時間を6時間前後まで延ばすことが可能です。
消費電力量が減るとそのぶん発生する熱量も減るので、電池の持ちが改善できれば、発熱の問題にも一定の効果が期待できます。
※当記事ではSurface Pro(第1世代/2013年モデル)を使用しています。Surface Pro(第5世代/2017年モデル)とは異なります。ただし、今回試した設定はWindowsに標準で用意されている設定項目を使用しており、機種特有の機能を使っているわけではないため第1世代Surface Pro以外の機種でも有効かと思います。
目次
実験のレギュレーション
さっそく実験です。BBenchでバッテリーベンチマークをして、満充電から電源断までの時間を見ることにします。BBenchの設定はデフォルトのキーストローク出力10秒毎、Web巡回60秒毎です。Internet Explorer 10をタブブラウズ無効にして使用します。
その他、電池消費に影響のありそうな点として、MicroSDHCはアクセスはしないものの差しっぱなしです。USBは何も差していません。Bluetoothはオンですが、何もペアリングしていません。また、最初にデフォルトの設定で測定したとき以外は画面の明るさを5%に設定しています。
デフォルトの設定では4時間しか持たないというのが通説なので、とりあえずそれを検証してみます。
たしかに買ってきたままの状態では、4時間半しか持たない
何も弄っていない電源プラン「バランス」で、バッテリー100%から50%まで2時間39分、4時間36分で8%となり電源断。だいたい一定の減り方ですが、25%あたりから一気に21%に落ちているのと、0%まで使い切れるわけではないことから、後半のほうが電池が持たない感じになっています。とはいえ、5%以下で休止状態に移行と設定してるのに、8%で切れてるのがちょっと気になる。
だいたい言われている通りですね。ただし、最もバッテリーを削ると思われる画面の明るさがデフォだとかなり眩しく、このまま使う人も少ないと思うので、実際の利用シーンではもうちょっと長いんじゃないでしょうか。
電源プラン・省電力をベースに、プロセッサの最大値を制限してみる
省電力をベースに、新しい電源プランを作成してみます。電源プランから、電源プランの作成を選び、既定のプランに「省電力」を設定して開始します。
とりあえず画面の明るさを5%にしたほか、プロセッサの最大値を50にしました。50%まで3時間1分、0%まで5時間12分。画面の明るさも下げたのでもうちょっと延びるかと思ったのですが、意外と変化が少ないですね。5時間しか持たないとは思いませんでした。画面の明るさは意外と電池持ちに影響がないのでしょうか。
タスクマネージャを見ると、通常の省電力ではアイドル時でもCPU周波数が0.8~1.0GHzあたりをうろうろしているのに対し、当該設定では0.78GHzから動かないことに気づきます。動作周波数が下がったため、アイドル時その他の熱量は下がりましたが、逆にどんなに負荷をかけても0.78GHzから動かないので、たとえばニコニコ動画を見るとコメントがカクカクします。この設定は一般的な用途にはオススメしづらいですね。
プロセッサの最大値の設定はなかったことにして、別の設定を探ります。
レジストリを変更して電源プランをさらにカスタマイズする
デフォルトでは表示されていない設定項目を出すために、レジストリを変更します。試す場合は自己責任でどうぞ。
下記パスの配下に格納されているのがプロセッサの電源管理に関連する項目です。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\
具体的な内容は次項以降で書いていきます。
Core Parking(コア保留)を有効にする
デフォルトではコア保留が有効になっていないので有効にします。
Core Parking とは、負荷がそれほど高くない場合に全ての CPUコアを利用せず、不必要なコアを”保留状態”にして使用しているコアを減らし、電力を削減する機能です。
Windows 7 はクライアントOS であるため、負荷の上昇に対してなるべく早く高性能状態へ移行する目的で Core Parkingに関する設定は既定ではオフになっています。(中略)
その設定を適用すると、このように、Core Parking によって CPU が片方 (当方 Dual Core環境なため)保留状態になります。
Quad Core環境だが、外出時に使用コア数を減らしたいといった方にお勧めです。Windows 7 で Core Parking を利用する方法 – 岩田 雅樹 のブログ – MSDN Blogs(Internet Archive)
上記はWindows7についての記述ですが、Windows8やWindows10でも同様です。デフォルトの状態ではコア保留の設定を変更できないので、下記パスのレジストリを変更して設定項目を表示させます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583
0cc5b647-c1df-4637-891a-dec35c318583 に格納されている Attributes の値を「0」に変更すると、電源オプションに「プロセッサ パフォーマンスのコア保留の最小コア」が表示されるようになります。※レジストリの変更後はサインインし直す必要があります
非表示の設定項目は他にも色々あります。どれが何の項目に対応してるかは、マイクロソフトの公式ガイドに記載されています。
参考:Windows 7 と Windows Server 2008 R2 でのプロセッサの電源管理(Internet Archive)
色々試してみるのにいちいちレジストリを書き換えるのは面倒なので、とりあえず全項目を表示するように変更してみました。
レジストリを変更したあとは、電源プランのプロセッサの電源管理→プロセッサ パフォーマンスのコア保留の最小コア を、デフォルトの「100%」から「50%」に、スロットルの状態を使用する を「オフ」から「オン」に変更します。
この設定後にリソースモニターを見ると、4個ある論理コアの一部が保留状態となるのがわかります。マイクロソフトの公式ガイドには「論理プロセッサ数が対象」と書かれていますが、最小コアを1%にしても2個動いているので、物理コア数を対象に動作しているようです(Surface Proは2つの物理コアをHyper Threadingで4コアにしています)。
リソースモニターのスクリーンショット。CPU2とCPU3が「保留」されています。保留状態となったコアはCPU使用率が0まで抑えられ、電力消費量の低減が期待できます。なお保留されているのは何も処理していないときだけで、何か重い処理をすると保留は解除されます。
プロセッサパフォーマンスに対する更なる設定
コア保留については、一般的なパソコン環境(サーバ以外)ではCPU使用率が0%か100%になることが多く、すぐ100にならないと反応が悪いとされるためか、通常では設定できないようにされているとのことでした。また、この設定はCPUコアが少ないと効果が薄く、定期的に監視するコストの方が高い(かもしれない)というのもあるようです。
という話を受けて、監視間隔を長めに設定します。プロセッサ パフォーマンスのコア保留の増加時間が「1時間チェック間隔」、プロセッサ パフォーマンス時間チェック間隔が「200ミリ秒」なので、デフォルトでは200ミリ秒毎に確認して制御するようですね。増加時間を「3時間チェック間隔」、時間チェック間隔を「1000ミリ秒毎」にしてみました。これで3秒毎にチェックするはずです。
その他、色々放り込んでみました。
- プロセッサ パフォーマンスの向上しきい値:95%
- プロセッサ パフォーマンスの待機時間感度に関するヒント:有効
- プロセッサ パフォーマンスの低下しきい値:80%
- プロセッサ パフォーマンスの低下ポリシー:ロケット
- プロセッサ パフォーマンスの向上ポリシー(プロセッサ数):50%
- プロセッサ パフォーマンスの向上ポリシー(アルゴリズム):理想
- プロセッサ アイドルしきい値スケーリング:スケーリングを無効にする
- 最小のプロセッサの状態:1%
- プロセッサ パフォーマンス コア保留の過剰使用のしきい値:85%
- システムの冷却ポリシー:アクティブ
- プロセッサ パフォーマンス向上間隔:1時間チェック間隔
- プロセッサの最大値:100%
- プロセッサ パフォーマンスの向上モード:効率的な有効化
- プロセッサ パフォーマンス コア保留の減少時間:10チェック間隔
- プロセッサ パフォーマンス コア保留の最大コア数:75%
普段は休眠させつつ、パワーが必要なときはパワーを出して終わったらすぐ休眠状態に戻ってもらうイメージで設定してみました。一応入れてはみたけど意味を発揮しなかった設定もあります(最小のプロセッサの状態など)。
さて、上記設定も入れた状態で測ってみます。50%まで2時間57分、0%まで5時間12分。テストでの稼働時間はプロセッサの最大値を50に設定したときとほぼ同等ですが、この設定では負荷をかけたときはちゃんと動作周波数が2.4GHzまで上がってくれるので、ニコニコ動画のコメントもカクつきません。
ただし、温度を優先するなら、プロセッサの最大値を制限したほうがいい可能性もあります。用途にあわせて両方組み合わせてみてもいいかもしれませんね。
Device Initiated Link Power Management(DIPM)を有効にする
デフォルトではDIPMが有効になっていないので有効にします。
SATA LPMとは、文字どおり「パワーマネジメント」の機能です。データ転送を行わない時にSerialATAのPHY(物理層)を低電圧状態に移行させ、消費電力を少なくしようというものです。
制御方法には、「HIPM((Host Initiated Link Power Management)」と「DIPM(Device Initiated Link Power Management)」 の2つが規定されています。HIPMは、ホスト側から省電力状態への移行要求を行う方法。DIPMは、デバイス(HDDやSSDなど)から省電力状態への移行要求を行う方法です。HIPMとDIPMは、どちらか一方のみを使用しても かまいませんし、両方を同時に使用することもできます。このため、両者は、パワーマネジメントの要求を行うのがHostかDeviceかの違いのみで省電力効果などの機能は全く同じです。(中略)
DIPMのメリットは、実際のコマンド等を処理するハード側ですべての制御を行えることです。DIPMは、コマンド(ATA SET_FEATURESコマンド)をDeviceに送るだけで機能のオン/オフを切り替えることができます。オンにした場合は、Device側で決められた基準に沿って、LPMを要求できます。
下記キーにある Attributes の値を「0」に変更して、電源プランに設定項目が表示されるようにします。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\0b2d69d7-a2a1-449c-9680-f91c70521c60\
電源プランのハードディスク→AHCI Link Power Management – HIPM/DIPM を、デフォルトの「HIPM」から、「HIPM+DIPM」に変更します。あわせて、次の時間が経過後ハードディスクの電源を切る設定は「なし」にしました。
なお、HIPM/DIPMはコンピュータの動作に引っかかりが起きる現象(いわゆるプチフリ)の対策として無効に設定されることが多いようです。私の使い方では特に問題は出ていませんが、この設定を有効にすることによって、状況によってはプチフリ的な動作をするかも知れません。
前項のCore Parking関連に加えて、DIPMも有効にした状態で、フル充電から電源断まで動かしてみました。50%まで3時間16分、0%まで5時間42分。
HWMonitorで温度を見てみると、CPUは51~54℃になっています。触ってみた感じだと、画面と裏面:ほんのり温かい、タイプカバー越しの裏面:何も感じない、といったところです。これは外気温によっても変わるので参考程度に。
アイドル状態では6時間19分
上記までに設定したカスタム省電力設定で、機内モードにしてキーストロークのみ実施した場合についても試してみました。フル充電から50%まで3時間35分、0%まで6時間19分。だいたいこのへんが最大値かなという感じですが、画面の明るさを5%のままにしていたので、0%にすればもうちょっと延びそう。
意外と機内モードのアイドル時でも、定期的なインターネットアクセスがある場合とあまり差がないですね。
その他の設定
他に入れている、電源に影響あるかもしれない設定をまとめて書いておきます。これらの設定は最初の電源プラン「バランス」で測定したときから入っていました(なので厳密には「買ってきたままの状態」ではなかったですね)。
不要なサービスを止める
Computer Browser、Fax、Serverを無効にしています。
デバイスの無効化
HIDセンサーコレクションを無効にしています。環境光センサーとポジションセンサーがセットで無効になります。これを無効にした状態では、明るさの自動調節と画面の自動回転は使えません。
ドライバインストール
ワコムのタブレットドライバTablet Driver 7.1.1-12をインストールしています。インストールしていない状態では試していないのでわかりませんが、ペンをホバー状態にしているだけでワコムのサービス(Tablet Service fot ISD driver)が少しCPUを使っているようです。
インテル公式のグラフィックドライバ バージョン15.31.9.64.3165をインストールし、ディスプレイ省電テクノロジーをオフにしています。
壁紙
Surface Proの液晶はIPS方式であり、IPS方式はノーマリーブラック(電圧オフで黒、最大電圧で白)なので、画面の表示内容が黒ければ黒いほど、消費電力量は少なくなるはずです。私は壁紙は濃い紫の単色にしています。電気効率だけ考えれば真っ黒にするのがいいと思います。
IPS方式の液晶分子配列の模式図。(A)が電圧OFF、(C)が最大電圧
かつての名機VAIO Type TZなどは、スタミナ壁紙(液晶がTN方式なので真っ白)を使用すると、バッテリーライフに最大で約30分も違いが出たそうです(公称値)。これに関しては私は実測していないのでどこまで本当かは分かりませんが、本当なら意外と馬鹿にできないですね。
意外に知られていないのが、背景色が白い壁紙は消費電力が少ないという事実。type Tには、消費電力の少ない壁紙「VAIO Long Battery Life Wallpaper」をプリインストール。これを設定するだけで、「スタミナ」が約30分アップします。
結論
各1回しか測っていないので、測定誤差はあるとは思いますが、アイドルで6時間19分、定期的なインターネットアクセスがあっても5時間42分持つなら、だいたい5.5~6時間くらいは持つと言えるでしょう。もちろんもっと負荷をかけた状態では時間は短くなるとは思いますが。
というわけで、Surface Proは電池が4時間半しか持たないと言われた場合は、設定次第で6時間持つぞ、とは言えるようになったのではないでしょうか(なおデフォでもっと電池持ちがいい機種で同じ設定したらどうなるのと聞かれたら反論できない模様)。
私も完全に理解していじっているわけではないので、記載の誤りや、もっとこうしたほうが効果が高いという点がありましたら、ぜひご教示くださいませ。
今回入れた設定まとめ
電源プランについては、レジストリを編集しないと表示されない項目もあります。詳しくは本文を参照ください。
電源プラン-ハードディスク
- AHCI Link Power Management – HIPM/DIPM:HIPM+DIPM
- 次の時間が経過後ハードディスクの電源を切る:なし
電源プラン-プロセッサの電源管理
- プロセッサ パフォーマンスの向上しきい値:95%
- プロセッサ パフォーマンスの待機時間感度に関するヒント:有効
- プロセッサ パフォーマンス コア保留の最小コア数:25%
- プロセッサ パフォーマンスの低下しきい値:80%
- プロセッサ パフォーマンス コア保留の増加時間:3時間チェック間隔
- スロットルの状態を使用する:オン
- プロセッサ パフォーマンスの低下ポリシー:ロケット
- プロセッサ パフォーマンスの向上ポリシー(プロセッサ数):50%
- プロセッサ パフォーマンスの向上ポリシー(アルゴリズム):理想
- プロセッサ パフォーマンス時間チェック間隔:1000ミリ秒
- プロセッサ アイドルしきい値スケーリング:スケーリングを無効にする
- 最小のプロセッサの状態:1%
- プロセッサ パフォーマンス コア保留の過剰使用のしきい値:85%
- システムの冷却ポリシー:アクティブ
- プロセッサ パフォーマンス向上間隔:1時間チェック間隔
- プロセッサの最大値:100%
- プロセッサ パフォーマンスの向上モード:効率的な有効化
- プロセッサ パフォーマンス コア保留の減少時間:10チェック間隔
- プロセッサ パフォーマンス コア保留の最大コア数:75%
電源プラン-ディスプレイ
- ディスプレイの明るさ:5%
- 自動輝度調整を有効にする:オフ
不要なサービスを止める
- Computer Browser
- Fax
- Server
デバイスの無効化
- HIDセンサーコレクション
ドライバインストール
- Tablet Driver 7.1.1-12をインストール
- HDグラフィックス4000 バージョン15.31.9.64.3165をインストールし、ディスプレイ省電テクノロジーをオフ