記事

Raspberry Piでコマンドをゆっくりマスタしよう (7) CPUの温度

CPUの温度を監視したい

 よくCPUに放熱器をつけた写真を見ます。CPUが目いっぱい働いたときにどのくらいまで温度が上がるのか心配です。

 2016年2月26日以降のJessieでは、GUIの設定でパフォーマンスのタブにあるオーバークロックは選択できなくなっています。

overclock.png

 ただし、従来から、オーバークロック周波数を/boot/config.txtに記述すれば、CPUが忙しくなると、その周波数までクロックアップされます。

#arm_freq=800

 config.txt内に書かれたこの行の先頭にある#を削除します。800は800MHzのことです。Raspberry Pi zeroは1GHzだとして発表されたので、1000を入れます。

 ターミナルを立ち上げてエディタnanoを起動します。

sudo nano /boot/config.txt

 nanoはスクリーン・エディタです。カーソル・キーで、修正したいところまでカーソルを動かし、Delキーで左側の文字が消え、アルファベットのキーを打つとそのまま挿入されます。修正が終わると、Ctrl+Oで上書きします。Ctrl+Xでnanoエディタを終了します。

overclock2.png

cat /boot/config.txt

で修正を確認したら、リブートします。現在、ユーザpiの権限でrebootができます。

reboot

クロック

 いま、いくらの設定で動いているかは下記のファイルに書かれているようです。表示するにはターミナルでcatコマンドを使います。

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

 インテルCPUの中でもモバイル用は頻繁にクロック周波数を落とします。Raspberry Piに使われているARM系はモバイル前提のプロセッサですから、CPU負荷が軽くなるとすぐにクロックをデフォルトまで下げ、消費電力を少なくします。

温度

 CPUの温度は、下記のコマンドで表示します。

vcgencmd measure_temp

連続で表示する

 クロックと温度を連続で表示するシェル・スクリプトを動かします。

 Menuからアクセサリにあるテキスト・エディタを起動します。下記のテキストを入力します。

#!/bin/sh
while [ true ];
do
echo -n $(
vcgencmd measure_temp
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
)
echo Hz
sleep 5
done

 入力が終わったら、保存します。ファイル名はondo.shとし、ディレクトリはpiにします。

 ターミナルを立ち上げ、lsコマンドで、ondo.shがpiのディレクトリに存在していることを確認します。

chmod 775 ondo.sh

実行権を付与します。

cpu-temp2.png

ls -l

で、実行権が付いていることを確認します。

cpu-temp1.png

./ondo.sh

で温度とクロックを表示します。終了はCtrl+Cです。CPUが遊んでいるときは700MHzで、忙しくなったら1GHzに変わることが確認できます。

 1GHzでうごき続けると、CPUの温度はだんだん高くなります。デフォルトでtemp_limitは85℃に設定されているので、高温になるとクロックダウンします。/boot/config.txtにtemp_limit=40 などと低めを書いておくと、負荷が高くなってもクロックは低めに保たれます。

cpu-temp.png

 Zeroを室温18℃時、CPU負荷100%で30分走らせました。41度付近で温度上昇は止まっていました。USB周辺機器などをたくさん使うといろいろな部分で発熱します。使用条件のなかで周辺の温度が高いときには、temp_limitやarm_freqを適切に設定して安全に動くように管理します。

連載メニュー Raspberry Piでシェル・コマンドをゆっくりマスタしよう

(1) pwd いま、私はどこにいるの?

(2) df あといくつ空いている?

(3) cd ディレクトリ間をうろうろする

(4) cat ファイルの内容を表示

(5) top ps kill プロセスの表示、削除

(6) scrot  画面キャプチャ

(7) CPUの温度

(8) ifconfig ip iw 私のIPアドレス

(9) apt-getで日本語化

(10) ls dir lsusb ディレクトリ情報、USB機器の接続状況

(11) nano テキスト・エディタ

(12) GPIOポートをアクセスするgpio コマンド

(13) ping IPアドレス