Raspberry Pi CPU温度を制限する方法

CPU温度:温度計警告マーク

2017年10月、Raspberry PiでCPU温度を制限する方法がわかったのでメモしておきます。

CPU温度警告

CPU温度警告

以前に Raspberry Pi3でCPU周波数/CPU温度/CPU使用率を取得するPythonスクリプトを作成して、温度計警告マークについて確認しました。

Raspberry Pi CPU周波数、CPU温度、CPU使用率の取得Pythonスクリプト

CPU温度が80度を超えると温度計警告マークを表示し、CPU周波数を適切に低減していることがわかりました。

CPU温度の制限について

少し調べてみると、CPU温度が80度というのはデフォルトの動作ということがわかりました。

「vcgencmd get_config temp_limit」コマンドで、CPU温度の制限値がわかります。

$ vcgencmd get_config temp_limit
temp_limit=85

CPU温度が80度(temp_limit-5度)を超過すると過熱保護(Overheat protection)が働いて、CPU周波数を適切に低減します。temp_limitは、/boot/config.txtで設定できます。

公式サイトのHELPに、CONFIG.TXTの説明がありました。

CONFIG.TXT説明

CONFIG.TXT説明

 

CONFIG.TXT OPTIONS の Overclocking に temp_limit の説明があります。

Over Clock Option

Over Clock Option

 

temp_limit

Overheat protection. This sets the clocks and voltages to default when the SoC reaches this value in Celsius. The default value is 85. Values over 85 are clamped to 85.

【要約】
過熱保護。
これは、SoCが摂氏でこの値に達すると、クロックと電圧をデフォルトに設定します。
デフォルト値は85です。85を超える値は85に固定します。

CPU温度制限の設定方法

CPU温度制限を75度に変更してみます。

/boot/config.txt に下記の行を追加します。(デフォルトのconfig.txt には存在しませんので追加します)

temp_limit=75

リブートして、「vcgencmd get_config temp_limit」コマンドで、CPU温度の制限値を確認します。

$ vcgencmd get_config temp_limit
temp_limit=75

それでは、CPU周波数/CPU温度/CPU使用率を取得するPythonスクリプトを実行しながら、顔検出を開始します。

ARM 600MHz temp=43.5’C CPU: 4% [4, 3, 4, 5]
ARM 600MHz temp=43.5’C CPU: 3% [2, 2, 2, 3]
ARM 600MHz temp=44.0’C CPU: 3% [2, 4, 1, 3]
★←顔検出を開始
ARM 1200MHz temp=44.0’C CPU: 9% [2, 3, 25, 5]
ARM 1200MHz temp=45.6’C CPU: 15% [1, 3, 56, 0]
ARM 1200MHz temp=47.8’C CPU: 53% [50, 49, 52, 60]
ARM 1200MHz temp=49.4’C CPU: 49% [61, 39, 35, 61]
ARM 1200MHz temp=50.5’C CPU: 56% [56, 66, 50, 53]
ARM 1200MHz temp=51.5’C CPU: 59% [58, 66, 53, 60]
・・・
ARM 1200MHz temp=69.3’C CPU: 82% [79, 82, 82, 83]
ARM 1200MHz temp=69.8’C CPU: 82% [80, 83, 84, 82]
★←70度を超過してCPU周波数を低減
ARM 1182MHz temp=70.9’C CPU: 83% [81, 84, 86, 83]
ARM 1169MHz temp=70.9’C CPU: 81% [83, 83, 79, 78]
ARM 1141MHz temp=70.9’C CPU: 84% [80, 85, 87, 84]
ARM 1144MHz temp=70.9’C CPU: 83% [87, 82, 82, 82]
ARM 1128MHz temp=70.9’C CPU: 81% [81, 76, 82, 85]
・・・
ARM 978MHz temp=72.0’C CPU: 81% [82, 83, 87, 75]
ARM 992MHz temp=72.0’C CPU: 82% [84, 81, 80, 83]
ARM 989MHz temp=72.0’C CPU: 72% [76, 72, 71, 67]
★←顔検出を停止
ARM 600MHz temp=69.3’C CPU: 6% [12, 3, 6, 4]
ARM 600MHz temp=66.6’C CPU: 2% [3, 0, 4, 1]
ARM 600MHz temp=65.5’C CPU: 3% [0, 1, 5, 3]
ARM 600MHz temp=64.5’C CPU: 4% [4, 5, 2, 4]
ARM 600MHz temp=63.4’C CPU: 3% [1, 4, 4, 1]
ARM 600MHz temp=62.8’C CPU: 3% [1, 1, 7, 3]
ARM 600MHz temp=61.8’C CPU: 3% [0, 2, 6, 4]

アクション CPU周波数 CPU温度
顔検出 開始 600MHz → 1200MHz 44.0’C → 44.0’C
70度を超過 1200MHz → 1182MHz 69.8’C → 70.9’C
CPU周波数低減 1182MHz → 989MHz 70.9’C → 72.0’C
顔検出 停止 989MHz → 600MHz 72.0’C → 69.3’C

CPU温度警告

CPU温度警告

CPU温度が70度を超過したあたりで、温度計警告マークが出現しました。

 

まとめ

CPU温度制限(temp_limit)を75度に変更して確認しました。

CPU温度が70度になると温度計警告マークが出現しました。そして、過熱保護が働いてCPU周波数を低減して75度を超過することを抑止しています。