CosmosBlueのブログ

日々のよもやま話を徒然と

NUC13 ANHi3 Cooling設定に悩む

NUC13 ANHi3を動かしてみて最初に思ったのは「クーリングファンの変速音がイライラするな・・」でした。設定されていたのはプリセットの「Quiet」でした。かなりの低速静音設定で、確かに最低速になると風切音も軸の音も全く聞こえないくらいです。

しかし、温度上昇に追従してファンの速度が細かく切り替わるため、回転数のスイッチングが短いスパンで頻繁に起き、モーター音のうねり(唸りではなく)が耳に付きます。また、基本的にはファン回転数が低いのでCPUも温度がそこそこ高い。室温20℃でOSアイドリング時にCPU温度が50~55℃くらいです。

もう一つのプリセット「Cool」にするとうるさい。こちらはベースの回転数が高いので風切音(シュコーッ)が大きいです。その代わりにCPU温度はQuietより低くなります。

結局どちらのプリセットも気に入らず、自分で設定することにしました。ところが行き当りばったりだと、なかなか良い設定値が見つかりません。ただ、何回もトライ&エラーを繰り返しているうちに、「これは求めるもののバランスを発見する作業だ」ということに気が付きました。求めるものとはすなわち「性能」「静音」「低温」です。

何のためにファンを回しているのかと言えばCPUの温度を下げるためです。なぜCPUの温度が上がるのかというと電気を使って仕事をするからです。そしてこの仕事の量が多いほど温度は高く、少ないほど温度は低くなります。なので自分の好みに限りなく近い「性能」「静音」「低温」のトレードオフを実現する作業がCooling設定、自分の中ではそういうことになりました。

まず「性能」と「低温」は電気を使った仕事量に関係するので、電力をどのように供給・遮断制御するかを設定することになります。NUC13 ANHi3のBIOS(Ver. 0027)では下のような画面です。

Power, Performance and Cooling画面

External Ambient Temperature Tolerance

「40℃」を選択すると下にあるFan Modeにプリセット「Quiet」と「Cool」が使えます(他のシリーズにはあるプリセット「Balance」がこのBIOSにはありません)。自分で設定する場合は「User Defined」を選択します(Fan ModeはCustomになります)。


Power

「Balanced」「Low Power」「Max Performance」を選べます。通常は「Balanced」で問題ないかと思います。


Package Power Limit 1 (Sustained)

いわゆるPL1と呼ばれる電力制限です。NUCシステム全体がこの電力(Watts)で動くように設計された値(TDP)を設定します。NUC13 ANHi3は20Wになります。たまに15Wと書いてあるサイトを見かけますが、15WはCore i3-1315U自体のTDPで、NUC13 ANHi3は20Wです。余計なトラブルを回避する意味で、TDPを下回る、あるいは上回る値は設定しない方が良いです。デフォルトは20になっています。


Package Power Limit 2 (Burst Mode)

いわゆるPL2と呼ばれる電力制限です。システムが定格電力を超えて仕事をする時に、PL1ではなくPL2の電力値を上限にスパイクを刈り取ります。すなわちバーストモードの持続電力になります。この値をPL1と同じにすればTurbo Boostが無効になると書かれたサイトを稀に見かけますが、PL1とPL2が同じであっても可能な範囲でTurbo Boostは行われます。このリミットはあくまでも電力(Watts)に対する制御で、直接Turbo Boostの制御をしている訳ではありません。


Package Power Time Window (Tau)

電力スパイクの刈り取り基準をPL1からPL2に変更する時間と解釈されています。正しく表現しようとすると移動平均なんちゃらのかんちゃらと難しいので、バーストモードは何秒と指定する程度に理解しています。ただし、PL1でもPL2でもスパイクが出れば事後的に調整するので、必ず基準電力以下で動作するという訳ではありません。モニタリングしていると、PL1もPL2も概ね1.5W~2.7Wくらい最大瞬間でオーバーしています(PL1とPL2とTauの関係についてはかなりややこしいので下の脚注に書いておきます)。


Secondary Power Settings

モダンスタンバイやデバイスによる電力動作を指定するサブメニューです。


Cooling

ファン設定を行うサブメニューです。


次に「低温」と「静音」はいかに冷却するかに関係するので、クーリング設定の調整によってそのバランスを見つけます。

Cooling設定

Primary Temperature Sensor / Secondary Temperature Sensor

温度検知するセンサーを二つ、それぞれにクーリングファン設定できます。一つのセンサーだけでは他のセンサーが高温を示した場合に冷却対応できないためです。通常は「CPU」を第1センサーに選ぶと思います。


Maximum Temperature

ファンが最高回転数に移行する温度を設定します。


Minimum Temperature

二つの役割があります。一つはこの後にある「Minimum Duty Cycle」の上限温度、もう一つは「Fan Cut-off Temperature Offset」の基準値です。


Fan Cut-off Temperature Offset

「Minimum Temperature」から何度下回ったらファンを停止するかの、「下回る度数」を指定します。Minimum Temperatureが40で、Fan Cut-off Temperature Offsetが10なら、30℃でファンは停止します。ただし(上の写真には映っていませんが)「Fan off Capability」がEnableの時だけ意味があります。

※ Fan off Capabilityが有効で、WindowsがS0スリープ(モダンスタンバイ)の深部に移行した後にファンが停止した場合、スリープから復帰するとFan off 温度を超えていてもMinimum Temperatureを超えるまでファンは回りません。Fan off温度を超えた時点でMinimum Duty Cycleが回り始めるものだと思い込んでいましたが違いました。


Minimum Duty Cycle

「Minimum Temperature」に到達するまでの間に提供されるファン回転数(の割合)を指定します。NUC13 ANHi3で例えば30%にすると約1,500rpmになります(ざっくり1%で50rpmと換算しても良さそうです)。ただし、モダンスタンバイ(S0 低電力アイドル)ではこの設定以下になる場合があります。

環境雑音が大きい昼間は1,800rpmくらいまでは近づかないと聞こえないくらいですが、環境雑音が少ない夜間は1~2m離れていても1,800rpmならファンの音が聞こえます(私感です)。


Ramp Rate Acceleration

「Maximum Temperature」を超えたとき、ファンの能力を超えて回転数を上げるかどうか、とかだったと思います(うろ覚え)。


Duty Cycle Increment

「Minimum Temperature」を超えたとき、「Minimum Duty Cycle」からどれだけ回転数(の割合)を増やすかを1℃あたりで設定します。

例えば、Minimum Temperatureが50℃、Minimum Duty Cycleが30%、Duty Cycle Incrementが1%だとして、CPUが55℃になった場合、30 + ( 55 - 50 ) × 1 = 35%、NUC13ANHi3では約1,750rpmになります。


Sample Period

ファン制御にかかる各種数値の観測間隔(秒)です。


Ramp Down Rate

温度降下に追従してファン回転数を下げる割合を設定します。「Duty Cycle Increment」は温度上昇1℃に対してファン回転数をどれだけ増やすかを指定しますが、「Ramp Down Rate」は温度が下降した際に、現在の回転数から何パーセント下げるかを指定します。割合を低くすると、下降した温度に適したDuty Cycleまでゆっくりと回転数を下げていきます。したがって、現在温度に比して高い回転数で強く冷やす時間が長くなると共に、次のスパイクを待ち受ける余力にもなります。また、急激なスイッチングによる軸の変調音を緩和することができます。ただし、高回転数の場合はうるさい時間が延びることにもなります。


さて、ではこれらのパラメータを使って自分の納得がいくクーリングを発見していきましょう。自分のNUC13 ANHi3は次のようなユースケースを前提にします。

 

ユースケースとターゲット設定


自分はゲームをやりません。そもそもゲームをやる人はCore i3を買わないでしょう。動画編集もやりませんし、可能な限り最高のクロックアップとクーリングシステムが必要というものではありません。

昼はリモートワークでTeamsをしたり、メールを読んだり、アプリケーションをコーディングしたり、Office365で資料を書いたり、夜はYoutube動画を流しながらブラウザで好きなサイトを閲覧したりといった、一般的な操作でもたつかない性能があれば良い。願わくば代々のi3より速いと実感したい。

静音は、当然誰でも静かな方が良いに決まっていますが、それが叶わないなら軸の変調音が無いようにしたい。一定の騒音が続く方が環境雑音として気にならなくなる可能性が高いので。

低温については、肌感で問題の無い50℃にすべてが収まって欲しいと思いますが、電気を使う機器はそう甘くありませんので、+-10で「40℃~60℃までをノーマルレンジ、スパイクしても70℃を超えない」を第一目標にしたい。


Trial 1

  • Package Power Limit 1:20
  • Package Power Limit 2:25
  • Package Power Time Window:6 
  • Fan off Capability:Disable
  • Primary Temperature Sensor:CPU
  • Secondary Temperature Sensor:CPU Voltage Regulator
  • Maximum Temperature:90
  • Minimum Temperature:50
  • Fan Cut-off Temperature Offset:10 (ignore)
  • Minimum Duty Cycle:27
  • Duty Cycle Increment:2
  • Sample Period:1
  • Ramp Down Rate:50%

このトライアルは概ね良好だったのですが、スパイクが70℃を超えることが多く、また、例えばCPU(基板のCPUセンサー)は71℃くらいでも、コア毎のセンサーではPコアの片方が80℃を超えていたりします。また、ベース温度がMinimum Duty Cycleの閾値付近になるので、ファンが吹かしたり下げたりの音が少し気になりました。もうひと頑張りチューニングが必要かなという感じになりました。


Trial 2

  • Package Power Limit 1:20
  • Package Power Limit 2:22
  • Package Power Time Window:2
  • Fan off Capability:Disable
  • Primary Temperature Sensor:CPU
  • Secondary Temperature Sensor:CPU Voltage Regulator
  • Maximum Temperature:90
  • Minimum Temperature:50
  • Fan Cut-off Temperature Offset:10 (ignore)
  • Minimum Duty Cycle:30
  • Duty Cycle Increment:2
  • Sample Period:1
  • Ramp Down Rate:25%

CPU温度はやはり第一にWattsなんだろうということで、性能低下に若干の不安があるものの、思い切ってPL2とTauを下げてみました。また、Minimum Duty Cycleを上げ気味にして、ベースを40℃台後半まで下げたい。そして、スパイク後も冷却余韻を残すためと、変調音緩和のためにRamp Down Rateを下げてみます。理論的には86℃でDuty CycleはMax100%になります。

Test Scenario


テストは難しいことはしません。ユースケースに合わせていつもの環境でいつものアプリを動かします。以下のテストを冬室温と夏室温の両方で行います(The test only use my preference software as usual, I don't use benchmark software.)

  1. デュアルモニターにします(Dual monitors connected)
  2. HWMonitorを起動して1分アイドル後の値を採ります(Measurement temperature after 1 minute system idle using HWMonitor)
  3. モニター1面でYoutubeの動画を1本流し続けます(Run Youtube video on one  monitor)
  4. モニター2面でVisual Studio 2022を起動してソリューションを1つ開きます(Open a project using Visual Studio 2022 on other monitor )
  5. 続けてモニター2面でゴテゴテしたサイトをChromeで3つ連続で開きます(Amzon, ヨドバシ, 楽天のトップページにしました)(Addition, open heavy 3 sites using Chrome browser)
  6. これらを連続で行った後にHWMonitorの値を採ります(Measurement temperature after test using HWMonitor)

Test case 1 : Winter afternoon room case - Result


室内気温は冬のエコ暖房19.5℃

室内温度19.5℃

テスト前(1分アイドリング後の状態)

冬温度 テスト前のモニター値(Before test)


テスト後1分以内

冬温度 テスト後のモニター値(Test Result)


いい感じです。注目すべきなのはMax列で、短時間のスパイクも記録されています。Value列(Current)も参考にはなりますが、Min列は全く見る必要ありません。

PコアもEコアも(一瞬であっても)100%使われた上での数字ですので、それなりにチューニング効果があったと思われます。

Test case 2 : Summer mornig room case - Result


室内気温は夏の朝8時設定26℃

室内温度26.0℃

テスト前(1分アイドリング後の状態)

夏温度 テスト前のモニター値(Before test)


テスト後1分以内

夏温度 テスト後のモニター値(Test Result)

これもいい感じです。冬温度と比してベースは高いですが、Maxは冬温度と誤差の範囲です。電気的発熱にはあまり室内温度は関係ないんでしょうかね。ただ、ファンの回転数がMaxでは冬温度テストより130rpm高いので、CPU温度のサンプリングでは62℃に平準化されたものの、実際には冬温度テストよりもう2℃高い65℃程度まで上がったものと思われます。

冬温度で良くても夏温度でダメだったらまた来年調整しなければなりませんので、結果を出せて良かったです。2時間かけてエアコン暖房をブン回した甲斐がありました。なお、どちらのテストケースでもNUC13は起動前に60分以上のシャットダウン時間を設けて室温に馴染ませています。


Discussion

ターゲット「低温」については満足のいく結果となりました。実際の運用においては様々な処理の並列化が起きるし、また、意図しない謎のバックグランド負荷によるスパイクもあったりで、キレイにいつも70℃以下という事はないでしょう。しかし、ユースケースの大半を意図した温度で制御できる結果になったので、これについてはOKとします。

ターゲット「静音」についても個人的には満足できました。やはり2000rpmを超える55℃あたりから「ウォォーォン」という音は聞こえますが、徐々に遠のいていく感じに音が緩やかに減衰しますし、アップダウンが数回繰り返されるということもめっきり減ったのでイライラ感がなくなりました。これも合格だと思います。

ターゲット「性能」については、これはもう私感にしかなりませんので好き勝手言いますと「NUC11に勝るとも劣らない」という感じです。つまり、NUC11PAHi3から2世代を経た今「衝撃の性能を目の当たりにしたっ!」といった感動はありませんが、劣っているところは何も無い、そういう感じです。Office365系のアプリはWindowsに先読みキャッシュされているのでNUC11でも13でも起動はクッソ早いですが、それ以外のアプリでもNUC11と遜色はないです。なので、自分のNUC13ANHi3は今後このまま「Trial 2」のクーリング設定でいくことにします。


電力(Watts)はかなり絞ったので、これ以上低くするとRaptor Lakeの良いところが無くなってしまいそうです。22W/2秒でもTurbo Boostは効いていますが、P, Eの全コアが揃って最大boostというのはほとんど見ることはありません。22W/10秒にしておいても、そこまで電力を使う処理要求が無ければ22W/2秒とCPU温度は変わらないですが、暴走ソフトや暴走サイトにひとたび出会うと10秒は頑張りますので難しいところです。まだPL1とPL2を同じにするとか、Power項で「Low Power」にする等の手段が残ってはいますが、熱を出さない方向のチューニングはここら辺が限界かなと思います。

「Minimum Duty Cycle」は実際に設定してみて気にならないなら、32%~34%くらいにするのもお勧めです。「Minimum Duty Cycle」での差はその後の全ての温度に対して効いてきます。例えば30%1500rmpと、32%1600rpmの差は「Duty Cycle Increment」が同じならその後の各温度でも常に100rpm上乗せになります。つまり「Minimum Duty Cycle」32%の方が同じ温度に対してより強い風を当てることになります。逆にMinimumでは気にならなくても、温度が上がると騒音は常に100rpm分だけ大きくなります。

「Minimum Duty Cycle」と「Duty Cycle Increment」の設定はインテルのコミュニティでも実に様々な議論がなされています。過去のアーキテクチャに対するものは必ずしもNUC13に当てはまらない場合も多いですが参考にしてみてください。


PL1とPL2とPackage Power Time Windowの関係について


自作派の方はマザーボードBIOS説明書等で割と正確に把握しておられると思うのですが、「Package Power Time Window」は「PL2 時間」ではなく「PL1 時間」を指しています(インテルもPL1 時間と言っています)。直感的にはPL2バーストモード持続時間と誰しもが思ってしまうので、もうここでややこしいのです。

PL1 = TDP電力をPackage(CPU全体)が超えた後に、ターボブースト倍率がアクティブでいられる時間が「Package Power Time Window」の秒数になるようです。つまり、「TDPは超えてるんだけどPL1でターボブースト継続しててもいいよ時間」というのが何となく確からしい説明なのかなと思います。

これに対してPL2は最大でも10ミリ秒、NUC13 ANHi3は2.44ミリ秒間は指定値での電力カットが保証されているようです(2.44ミリ秒はHWiNFOで見た値)。Package Power Time Windowのように何秒、何十秒という世界ではないです。

よって、PL1とPackage Power Time Windowは密接に関連しますが、そこに(時間としての)PL2を絡めて考えるとややこしいので、PL2はあくまでもTDPを超えた場合にPackageを保護する役割(それによって結果としてターボブーストが却下される場合もある)と考えれば良いのではないでしょうか。

すんごい大雑把かつ推測混じりの解説ですいません。


巷では13世代はアチチと言われていますが、大概の記事はi9やi7が対象で、i3のアチチなんて可愛いものだという風潮もある中、パーツ構成を変えられないNUCとう小さな箱のi3クーリングを真面目にやってみました。いかがでしたでしょうか。

BIOS画面がキャプれないのでスマホで撮っていましたが、その流れでHWMonitorの画像もスマホで撮ってました・・・キャプれば良かったじゃんね・・

Windows DefenderフルスキャンでCPUファンが爆音を上げている方はこちらも参考にどうぞ。

2024/1/14 追記:

そういえば、NUC11 pahi3ではプリセット「Balance」で特に不満もなかったなと思い、NUC11 pahi3のCooling設定を今さら確認してみました。NUC13 ANHi3とはTDPが異なるためPL1, PL2がかなり大きいですが、Minimum Duty Cycle35%を64℃まで引っ張っているのが分かりました。

  • ※ NUC11 PAHi3 Setting (Preset "Balance")
  • Package Power Limit 1:30W
  • Package Power Limit 2:64W
  • Package Power Time Window:28s
  • Fan off Capability:Enable
  • Primary Temperature Sensor:CPU
  • Minimum Temperature:64
  • Fan Cut-off Temperature:30
  • Minimum Duty Cycle:35
  • Duty Cycle Increment:2

NUC11 PAHi3のアイドル時ファンは1,880~1,920rpmあたりを行ったり来たりしていました。同じrpmが同じ風量とは言い切れないのですが、NUC13 ANHi3で1,900~1,950rmpは39%にあたります。これを参考に、以下のような、もう少しハイパフォーマンスを求めた値に設定変更してみます。

  • ※ NUC13 ANHi3 Setting ( Custom )
  • Package Power Limit 1:20
  • Package Power Limit 2:28
  • Package Power Time Window:28
  • Fan off Capability:Disable
  • Primary Temperature Sensor:CPU
  • Secondary Temperature Sensor:CPU Voltage Regulator
  • Maximum Temperature:90
  • Minimum Temperature:64
  • Fan Cut-off Temperature Offset:20 (ignore)
  • Minimum Duty Cycle:39
  • Duty Cycle Increment:2
  • Sample Period:1
  • Ramp Down Rate:25%

 

上記設定での「ハイパフォーマンスでなるべく低温設定」については以下の続編でお届けします。

 

※この記事はBIOSの操作を推奨するものではありません。古くからBIOSの編集・変更にはリスクが伴うことは知られています。また、クーリング設定をプリセットから変更した時点でクーリングの責任はユーザーに移ります。それが原因でNUCが故障した場合はIntelのWarrantyが効かなくなる場合があることをご承知ください。

ご自身のPCをご自身の責任でいじられることは何の問題もありませんが、結果については常に自己責任であることを認識して頂ければと思います。この記事によって被ったあらゆる損害についてブログ主は免責とさせて頂きます。