「えだまめ」しているラズパイ

30年ぶりに半田ごて握ってラズパイ勉強中。

ラズパイのCPU状態の推移をグラフにすると…

◯やりたいこと

ラズパイのCPU動作状態推移(温度、クロック数、電圧、メモリ)をグラフにして動作状況を把握する。

◯やったこと

ワガ家の「えだまめ」ネットワーク、ラズパイサーバー達は基本パッシブ型の空冷ケースで運用しており冷却は自然対流にお任せとなってます。初期の頃こそファン付きのアクティブタイプで空冷していたのですが、やたらとホコリは呼ぶし、いわゆる安普請ファンなのでしばらくすると軸なりを始めかなりにぎやかに。挙げ句の果てにブーンといって回らなくなってしまう、というパターンを繰り返したのでいい加減あきれてファン付きは全て撤去してしまいました。

ラズパイ達はラズパイ用アプリなどでたまに温度を測ったりしてある程度の動作状況を把握していたのですが、ここで改めて定期的に情報を集めグラフにして動作状況を見てみることにしました。

・グラフ

SQLサーバー (4B+)

「えだまめ」ネットワークの記憶中枢、SQLサーバーの1週間分の動作状況です。記録は概ね1分おきに取得しています。動作温度はほぼ50℃前後で一定、ケースはけっこうアツアツです。ただSQL的な重労働をかけてもそれ程温度は上がらないのでまあ許容範囲内かなと思ってます。動作クロックは1.5GHz〜600MHzの範囲で少々驚く頻度で上下しており、mariaDBは意外とエコなソフトなのかもと再認識していました。

ちなみにSQLサーバーはSSDで運用できるパッシブ型のケースに入れて動作中。

さらにSSDを外部にもう一つ接続してあり、

毎日pi-cloneで内部SSDをコピー、内部のSSDが飛んだ時は外部のSSDで起動するようにしています。

・階段下物置のサーバー達 (4B+,3B+,3B)

・Julius サーバー

日本語解析用サーバーの動作状況。温度は52℃前後を行ったり来たり。1週間分のグラフだと詳しくわからないのですが、拡大してみるとテレビの音声や人の会話が多い時間帯は稼働率が上がり温度が上昇する傾向があります。動作クロックは3B
ですので1.4GHz〜600MHzの範囲。このソフトも結構こまめに動作周波数が変化しています。
途中グラフが凹引っ込みしている部分は電池式の卓上扇風機を前に置いてみた時。効果はテキメンで10℃以上温度が下がっており強制空冷の威力が垣間見えます。

・グラフサーバー

グラフ描画用としてGUIを動作させ matplotlibで画面描画、画面ファイル出力を担当させているサーバーのグラフです。webサーバーに使用するグラフなどを要求により定期的に出力しています。GUIを動作させているせいかCPUクロックは上限に張り付いていて、マシンへの描画要求が重なるとCPU温度がポンと上昇しています。

・スケジュールサーバー

scheduleモジュールを利用し、定時、定刻、定サイクルに指定コマンドをサーバー達に送信するサーバーのグラフです。毎年の家族の誕生日にハッピーバースデーを演奏、毎日7時・お昼・19時にNHK時報、1分サイクルでCPUデータを集めるなど結構忙しく動いているサーバーです。夜にはSQLが各サーバーからSFTPでデータを吸い上げバックアップするコマンド送信も担当していて、サーバーの中では一番活躍度の高いサーバーです。そのせいか動作クロックも上限に張り付き気味です。

・温度でソフトのバグを発見

Django(Web)サーバー

Djangoを走らせているWebサーバーです。外部には公開していません。グラフは10時間分の記録ですが、このサーバー、なぜか他のサーバーに比べて温度が60℃と異常に高く動作していました。どうもおかしいと思ってhtopでCPUの動作を見てみたところ4コア中1コアが100%で稼働中。これでは高温もあたりまえです。

どれどれと原因原因を追求したところ、LED点滅の時間待ちを時刻変化のチェックだけで済ませたためにおきた高速ループのバグ。sleepを挟まなくてはならないやつです。マルチプロセスを使う時によくやってしまいます。

グラフはこのバグをFixした後の温度の変化。現金なものでFix後8℃も温度が下がっています。ソフトの書き方一つでCPU温度に影響が出るという事を身を持って経験です。

◯やってみて

CPUの動作情報を実際にグラフに描画するとソフトのバグを発見できる事がわかりました。Z80マシン語時代(シングルコアだったのでとにかく早くループさせる事ばかり考えてた)には考えもしなかったCPU温度を意識したソフトの作成。意外に今の時代に合ったSDG’Sなのかもしれません。