fatsheep's memo.txt

気になったこと、試したこと、その他もろもろを書いていきます。

Raspberry piのファン付きヒートシンク レビュー

f:id:fatsheep:20200830015331p:plain

以前Raspberry pi 4 (4GB)を購入し最近はKali LinuxUbuntu Mateを入れて遊んでいます。

4になったことでCPU、メモリなど様々な部分でスペックアップが行われ、Raspberry piでできることが増えました。重い処理も対応できるようになった一方で、温度上昇もし易くなったようです。

そこで今回、ファン付きのヒートシンクを購入してみましたので、実際にどの程度冷却できるのか、また冷却により処理性能が向上するか試してみました。

発熱問題

Raspberry pi4ですが、今回ヒートシンクを購入するまでは本体と一緒に購入した以下のケースにいれて利用しておりました。

f:id:fatsheep:20200830015842p:plain
これまで使っていたケース

GUI環境でブラウザを開いているだけでも熱を持つようで、画面上に温度計マークがしょっちゅう表示されるようになってしまいました。

f:id:fatsheep:20200830020855p:plain
プロセッサーが高温になると表示される温度計マーク

何となく表示されるマークで何を意味するかは察していましたが、改めて調べてみると、プロセッサーの温度が80度以上になると表示され、温度上昇を抑制するためにクロック周波数を低下させる機能が働く(サーマルスロットリング)ようです。

※参考:Firmware warning icons www.raspberrypi.org

頻繁に表示され処理も低下するということで、その対策としてヒートシンク導入を検討しました。

購入品

Raspberry piヒートシンクは調べてみると様々な種類があり、例えばチップ・プロセッサーに貼り付けるだけの簡易なものや、ケース一体型のもの、さらには一般的なデスクトップパソコンに取り付けるような大型のCPUクーラーまでありました。

今回はより冷えそうなファン付きのもので、コンパクトな以下を購入しました。

以下、商品画像です。

f:id:fatsheep:20200830021702p:plain
外箱
メーカー名だけ記載されているシンプルなもの

f:id:fatsheep:20200830021815p:plain
内容物
右上にある3Mの熱伝導シートみたいなものは使途不明・・

f:id:fatsheep:20200830022151p:plain
ヒートシンク本体
最初から熱伝導シートみたいなものが貼り付けられてある

f:id:fatsheep:20200830021916p:plain
ファンの電源はGPIOから取るようです
また接続するピンを変えることで回転速度は2段階で調整可能な模様

Raspberry piの取り付けは非常に簡単で、ヒートシンクと本体とを、またファンとヒートシンクとをねじ止めするだけで完了でした。(唯一注意するべきところはファンの向きで、風向を示す矢印などついておらず、そのため通電・回転させて確認しました。)

冷却性能確認

確認方法

せっかくなので、ヒートシンク導入前後でどの程度冷却されるか確認してみました。大まかな条件は以下の通りです。

  • 室内温度はおよそ27度
  • Raspberry piについて
    • 接続しているものは、電源ケーブルHDMIケーブル、USBハブ(キーボード、マウス接続)
    • OSはUbuntu mate 20.04.1 x64
    • ネットワーク(有線LAN・無線LAN)は接続しない(起動後の自動アップデート防止)
  • 以下のパターンで測定
    • 従来使っていたケースに入れた状態
    • ヒートシンクのみ取り付けた状態
    • ファンを動作(低速回転モード:3.3V)させた状態
    • ファンを動作(高速回転モード:5.0V)させた状態

温度測定は以下の流れで行いました。

  1. 起動前に扇風機を当ててチップなど十分に冷却
  2. 電源オン
  3. 10分待機
  4. 高負荷処理実行
  5. 10分待機

3の高負荷をかけるところはUnixBenchを利用しました。なお実行時間短縮のため、オプションを指定して実行(./Run -c 4)しました。オプションを指定することで指定したコア(4コア)の測定のみ行うようになります。(指定なしの場合はシングルコアとマルチコアの両方を順番に行う。)

最後の10分待機のところはアイドル時の温度遷移を見たかったために設けました。

3~5の間は1秒おきに以下のコマンドで動作周波数とチップの温度を測定・記録しました。

  • 動作周波数測定(単位:Hz)
root@rpi:~# vcgencmd measure_clock arm 
frequency(48)=750199232
  • チップ温度測定(単位:度)
root@rpi:~# vcgencmd measure_temp
temp=45.0'C

結果

結果は以下のようになりました。

f:id:fatsheep:20200830233106p:plain
4パターンそれぞれの温度変化

最初の1/4くらいが高負荷処理実行前の10分間の待機、最後の1/4くらいが高負荷処理実行後の10分間の待機になります。グラフの縦軸はプロセッサの温度(度)を示しています。

従来利用していたケースの場合、アイドル時は50度台ですがUnixBenchで高負荷をかけると80度を超える結果になりました。一方でヒートシンクを取り付けたものとヒートシンク+ファンを取り付けたものは、アイドル時で40度前後、高負荷をかけた状態でも50度〜70度程度に抑えられているのがわかると思います。

温度変化については上記の結果で効果が発揮できているのがわかりましたが、特に高負荷処理時の温度と動作周波数を次の表にまとめてみました。

高負荷処理時の平均温度(度) 高負荷処理時の最大温度(度) 高負荷処理時の平均動作周波数(MHz) 高負荷処理の処理時間(mm:ss) UnixBenchスコア
従来利用していたケース 82.77 87 990.64 25:26 572.2
ヒートシンクのみ取り付け 61.64 68 1337.02 25:48 768.8
ファンを動作(低速回転モード) 56.73 61 1338.57 25:48 767.8
ファンを動作(高速回転モード) 52.22 56 1337.97 25:50 769.0

UnixBenchを走らせている時間はどのパターンもほぼ同じ結果になりましたが、動作周波数とUnixBenchのスコアはヒートシンクの有無で大きく差が出ました。

温度変化のグラフでも示していましたが、従来利用していたケースの場合、プロセッサーの温度が平均82度、最大87度まで上昇しており、その結果サーマルスロットリング機能が働き動作周波数が低下していました。(UnixBenchのスコアが低いのはその影響と思います。)

一方でヒートシンクのみをつけた場合、またファンも動作させた場合は平均動作周波数、UnixBenchのスコアともにほとんど変化がない結果となりました。このことからUnixBench程度の負荷であれば、ヒートシンクで冷却するだけで処理性能を落とさず動作させることができると言えます。

なおファンはGPIOに接続されており、またOS上でプロセッサーの温度を測定できるので、比較的簡単に温度によって自動でファンを動作させる(停止・作動)作り込みができるのではと思います。

最後に

今回の記事では、Raspberry piの温度上昇による処理性能低下の対応として、ファン付きヒートシンクの導入と効果の比較を行ってみました。

実際に検証してみて感じたことは、ヒートシンクだけでも結構効果があったということです。ファンを動作させるとどうしても動作音が気になる(特に小さめのファンだと尚更)ので、ファンレスヒートシンク兼ケースのようなものでも必要十分だなと思いました。

右上に温度マークが頻繁に出たり、何となく処理が重いなと思う場合にはヒートシンクのみでも良いので冷却システムの導入がおすすめです。


■ 更新履歴

  • 2020/08/31 新規作成

■ 参考情報