Surface Pro 3の発熱抑制法を探る:「Turbo Boost無効化」と「クロック上限の設定」を試す
Surface Pro 3は高度な自動制御でパフォーマンスと発熱抑制を両立しているが
Surface Pro 3は、薄型軽量のボディに高性能のCore i5やi7を搭載しているため、高度な冷却機構と電源管理によって、ハイパフォーマンスを実現しつつオーバーヒートを防ぐよう自動で制御されています。
しかし、プロセッサに一定時間負荷をかけていると発熱は多くなるので、ユーザーの中には、以下のような点がどうしても気になるケースもあるようです。
- 本体右上部が高温で持ちづらい
- 冷却ファンの動作音が気になる
- 高負荷動作後に動作クロックが下がる現象(サーマルスロットリングと呼ばれる)を回避できないか
そうした場合、ユーザーが設定で解決できる余地はあるのか、突っ込んで調べてみました。
初期状態では、電源プランは「バランス」のみで詳細設定もできない
Surface Pro 3の電源プランは「バランス」しか存在せず、「電源プラン」→「詳細設定」を選択しても、プロセッサの動作クロックや冷却ポリシーなどを設定する項目が表示されず設定できません。
InstantGo がサポートされている PC に Windows で提供される電源プランは、バランスだけです。この電源プランは、必要なときはパフォーマンスを最大にし、必要のないときは電力を節約します。ニーズに合うようにこの電源プランをさらにカスタマイズしたり、(バランスを基にして) 独自の電源プランを作成できます。
電源プラン: よく寄せられる質問 - Windows ヘルプ
したがって、ユーザーが設定できる余地があるかといえば、「ない」というのが現時点での答になります。
ただし、レジストリを編集して設定項目を強制的に表示すれば、2つ方法がありそうだなということが見えてきました。
編集をミスするとシステムの動作に影響が及ぶ可能性がありますし、正しく設定できても動作に全く悪影響がないとは言えません。どうしても自己責任で設定変更したい場合のみ、参考にしてください。
※私のテスト環境は以下の通りです。異なる環境では違う結果になる可能性や私の把握していない不具合がある可能性もありますのでご注意を。
- Core i5-4300U
- Instant Go有効
- Visual Studio 2013 Update 3インストール→Hyper V無効
電源オプションにプロセッサの電源管理に関する詳細設定項目を表示する
まず、「電源オプション」→「詳細設定」→「プロセッサの電源管理」に、特定の詳細設定項目を表示します。
この4つを参考にしました。
Processor power policy on Windows (Windows Drivers)
少し古いノートPCにWindows8を入れたらCPUが本気を出してくれなくな - seraphyの日記
レジストリの以下の項目の下にプロセッサの電源管理に関する項目がぶら下がっています。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00
各項目のルートにある「Attributes」キーのDWORD値を初期設定の「1」から「2」に変更すると、電源オプションの詳細設定に対応する項目が出現します。
試しにAttributesキーが存在する全項目のDWORD値を1→2に変更したところ、全部で33個の項目が詳細設定に出現しました。
また、「最大のプロセッサの状態」など一部の項目については「Attributes」自体が存在しませんが、新規作成してDWORD値を「2」に設定すれば項目が出現します。
今回は、発熱抑制に効果のありそうな「Turbo Boostの無効化」「クロック上限の設定」をテストしました。
手順1:Turbo Boostを無効化する
Turbo Boostは、Core i5以上のCPUに搭載されている高速化機能で、発熱に余裕があるときにプロセッサの動作クロックを定格以上に引き上げます。
私の持っているCore i5モデル(i5-4300U)では、プロセッサの定格動作クロックは1.9GHz、Turbo Boost時の最大で2.9Ghzとなっています。
この機能を無効化すると、定格以上に動作クロックが上がることがなくなり、発熱が減少します。
すると、「プロセッサの電源管理」の設定項目に「プロセッサ パフォーマンスの向上モード」という項目が出現するので、これを「無効」に設定。
これで、動作クロックが1.9GHzより上になることはなくなりました。
手順2:クロック上限を設定する
クロック上限を設定する項目「bc5038f7-23e0-4960-96da-33abaf5935ec」には、「Attributes」がありませんでした。このため、新規にDWORD値を作成し、名称を「Attributes」に、DWORD値を「2」に設定。
すると、「プロセッサの電源管理」の設定項目に「最大のプロセッサの状態」という項目が出現するので、これを「100%」から任意の%に変更。
私のテストでは、
- 60%→最大クロック1.48GHz
- 50%→最大クロック1.18GHz
という結果になりました。60%だと、Core i3モデルの搭載するi3-4020Yの1.5GHzに近い数字です。
なお、同様の操作をコマンドで実行することも可能です。管理者権限のコマンドプロンプトで、以下のコマンドを実行します。(上がバッテリー駆動時、下がAC電源接続時の設定を行います)
powercfg /setdcvalueindex SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 60
powercfg /setacvalueindex SCHEME_CURRENT SUB_PROCESSOR PROCTHROTTLEMAX 60
設定変更による消費電力と発熱の抑制効果を確認
高負荷のアプリケーションとして「ドラゴンクエストX ベンチマークソフト ver.1.10」を使い、フリーソフト「HWMonitor」でCPUの消費電力や温度を、「タスクマネージャー」で動作クロックを測定しました。
測定→アイドル状態で冷却→次の測定という感じで前のテストでの発熱が次に影響しないようにしました。AC電源あり。
設定変更なしの場合、CPUの温度は最大80度程度に達し、ベンチマーク中盤から冷却ファンが最大回転、動作クロックは0.75~0.8GHzまで落ちてしまいます。これが、設定変更でどう変わるのか。
Turbo Boost無効化のみ(最大クロック1.9GHz)
- CPU最大温度80度前後、ベンチマーク中盤から冷却ファンが最大回転になり、CPU動作クロックが0.75~0.8GHzまで落ちるのは変わらず。
- ただし、CPUの最大消費電力7W前後とTB有効の場合に比べて下がった。
ベンチスコア:4347
Turbo Boost無効化+最大プロセッサ状態60%(最大クロック1.48GHz)
- CPU最大温度80度前後は変わらずだが、ベンチマーク終了まで冷却ファンが最大回転にはなることはなかった。
- CPU動作クロックは終盤まで1.45GHzをキープ。終了間際に1.1GHzまで落ちた。
- CPUの最大消費電力は5W前後とさらに下がった。
終盤まで1.45GHzをキープ
ベンチスコア:3911
Turbo Boost無効化+最大プロセッサ状態50%(最大クロック1.18GHz)
- CPU最大温度が70度前後に下がり、ベンチマーク終了まで冷却ファンが最大回転にはなることはなかった。
- CPU動作クロックは終了時まで1.15GHzをキープ。ほぼ常に一定だった。
- CPUの最大消費電力は4W以下とさらに下がった。
終了時でも最大クロック付近をキープ
ベンチスコア:3507
結論:「Turbo Boost無効化」+「上限クロック60%」は意外とベストバランスかも
今回のテスト結果から推測されたこと
- 動作クロックを下げると、発熱抑制の効果はある。
- 特に、50~60%の動作クロック上限を設定すると、発熱が少なくなり、ファンが高速回転しなくなり、サーマルスロットリングも起きづらくなる。
- 他方、クロック上限を下げるにしたがってパフォーマンスは下がる
個人的には、「Turbo Boost無効化」+「クロック上限60%」(最大クロック1.48GHz)であれば、そこそこのパフォーマンスで発熱も少なく快適に使えるような気がしました。
そう考えると、Core i3-4020Yというのは、意外とバランスの良い選択なのかもしれませんね。
私はしばらくこの設定で使ってみて、さらに検証を進めたいと考えています。