Rapberry Piの温度とかを視覚化したいと思ったことはないですか?メタルケース使ったときにどれくらい温度が下がるとか、ファンを当てたらどうなるかとか。安定稼働はRaspberry Piに限らず、サーバーなどといった24時間運用には欠かせないポイントです。せっかくなのでツールを作ってみたのでよろしければ。
目次
はじめに
このソフトウェアを利用される際は以下のソフトウェア利用規約必ずお読みください。利用される場合はソフトウェア利用規約に同意し遵守するものとみなします。
本ソフトウェアの使用は「使い方」に記している使い方のみが正しい使用法になっています。それ以外の使い方を一切認めません。
できること
- 計測できるデータは、CPU温度、CPU使用率、CPU動作周波数
- 以上の3つのパラメータをグラフ化し、画像ファイルとして出力します。
- その際のデータをCSVファイルとして出力
- 上述の計測データをリアルタイムグラフ表示
実行可能環境
- Raspbian またはRaspbery Pi OS
- Raspberry Piのバージョンは問いません
CPU動作周波数の取得のためのコマンドがRaspbianにしか実装されていないためです。気が向いたらブランチでも作って、大体のLinuxでCPU温度と使用率の2つだけグラフ化できるツールも作るかもしれません。
依存関係
gnuplotを必要とします。Raspbianのデフォルトで提供されているやつはどれも入っていないので以下のコマンドを実行する必要があります。ArmbianとかでもUbuntuServer相当だと入っていないのは確認したのですが、デスクトップ版とかだと入ってるとかあるかもしれないです。
sudo apt-get install -y gnuplot
ver0.04系で追加した "--nograph"オプションを利用する場合のみ以下のコマンドは不要です。詳しくは後述しているのでそちらをご覧ください。
ver0.10系でリアルタイムグラフ表示に対応しましたので、リアルタイムグラフ表示を行う場合は"--nograph"オプションを付けてもgnuplotが必要となります。
tmchkのインストール
紹介だけしておきます。GitHubはここです。
https://github.com/T-H-Un/tmchk
余談ですがtmchkという名前はtemperature_checkerを適当に略しました。インストールの手順は以下です。
gitを使う場合
git clone https://github.com/T-H-Un/tmchk.git
cd tmchk
make
sudo make install
make clean
gitを使わない場合
サーバなどでgitを普段使わないマシンなどは以下のコマンドでもインストールができます。
wget https://github.com/T-H-Un/tmchk/archive/master.zip
unzip master.zip
cd tmchk-master
make
sudo make install
make clean
使い方
以下のように入力します。
tmchk [サンプリング周期(整数、秒)] [ログを取得する時間(整数、分)] [出力pngファイルのフルパス] (--option)
ちなみに、出力pngファイルが存在する場合はそれを上書きします。「出力pngファイルのフルパス」は「/hoge/huga/test.png」のような拡張子を含む形で表記してください。オプションは全ての引数を入力したあとに(--option)のように最後の方に必要な物をつけてください。
オプションはver0.04現在で以下を実装しています。詳しい仕様などの説明は表の下の方でしています。
オプション | 説明 |
--help | ヘルプを表示します(英語です)。"tmchk --help"のように他の引数なしで使用できます。 |
--separate | 各パラメータの画像出力を分割し、合計で4つのグラフを出力します |
--nocsv | CSVファイルの出力をしないようにします |
--nograph | 最終的なグラフの画像出力を停止する設定です |
--realtime_temp | CPU温度のリアルタイムグラフを表示します。 |
--realtime_usage | CPU使用率のリアルタイムグラフを表示します。 |
--realtime_freq | CPU動作周波数のリアルタイムグラフを表示します。 |
--realtime_all | 上述の3つのリアルタイムグラフを一つのオプションで全て表示するためのオプションです。このオプションによって3つのリアルタイムグラフが表示されます。 |
以下では各バージョンで更新した際の細かいオプションの仕様を記しています。
ver0.02系にて"--separate"オプションを追加しました。このオプションを使うときは最後の引数として設定を行ってください。途中に指定するとエラーになります。
このオプションを用いることで、各パラメータのグラフを分割して出力することができます。今のところオプションを用いないときのグラフも同様に出力する設定になっています。
なので出力されるのは以下の4つのグラフになります。
- CPU温度
- CPU動作周波数
- CPU使用率
- 上記3つの値を一つのグラフにまとめたもの
またこのオプションを用いた場合のファイル名は以下のようになります。
CPU温度 | ファイル名+CPU_temperarure.png |
CPU動作周波数 | ファイル名+CPU_frequency.png |
CPU使用率 | ファイル名+CPU_usage.png |
上記3つをまとめたもの | 指定したファイル名そのまま |
ver0.03系で.csvデータファイルの出力に対応しました。この機能は標準で提供されているものであり、出力をするかしないかの設定は現状ではできません。出力ファイル名は、指定したpngのファイル名+.csvとなります。例を表にしておきます。
入力 | 出力csvファイル名 |
/home/pi/test.png | /home/pi/test.csv |
また、この.csvデータファイルのフォーマットは以下のようになっています。
time,CPU_temperature,CPU_usage,CPU_frequency
0,39.00,11,1000.00
...
左から順に「経過時間(秒)、「CPU温度」、「CPU使用率」、「CPU動作周波数」となっています。加えて、グラフ化した際にタイトルなどの自動化を考慮し、一番初めの行は各パラメータ名を付けています。このパラメータの対応表は以下となっています。
time | 経過時間 |
CPU_temperature | CPU温度 |
CPU_usage | CPU使用率 |
CPU_frequency | CPU動作周波数 |
ver0.04系にて新しいオプションを追加しました。
"--nograph" : 最終的な出力としてPNGファイルのグラフを出力しないオプションです。このオプションを用いる場合で、リアルタイムグラフを描写しない場合のみgnuplotは不要です。多くの場合はcsvファイルの出力が欲しい場合に使用するものだと思ってください。
"--nocsv" : CSVファイルを出力しないオプションです。
ver0.10系にてリアルタイムでグラフ化するオプションを実装しました。
"--realtime_all" , "--realtime_temp" , "--realtime_usage" , "realtime_freq"の4つですが、上のグラフの通りです。注意点としてはこのオプションはGUI環境限定で使える機能です。また使用時にはシステム負荷がかかりCPU使用率は普段の状態とかなり違う状態になります。どれだけ負荷がかかるというと、3つのグラフ全てをリアルタイム表示して、Raspberry Pi 4BでおおよそCPU使用率が20%上がります。
エラーが出た場合
tmchkのエラーにはいくつか種類があります。
- 実行権限によるもの
- 構文エラーによるもの
- 依存パッケージがインストールされていない場合
実行権限によるもの
実行権限によるエラーが出る場合があります。システム情報を取得するには、一部管理者権限を使用する場合があるからです。その場合は以下のようなエラーが発生します。
VCHI initialization failed
Segmentation fault
このエラーが出た際は以下のようにコマンドを実行してください。
sudo tmchk [サンプリング周期(整数、秒)] [ログを取得する時間(整数、分)] [出力pngファイルのフルパス] (--separate)
構文エラーによるもの
構文エラーの場合はError code(数字)のような形でエラーコードが出ます。コードの対応は以下のようになっているので確認をしてください。
Error code | エラー内容 |
1 | 引数の数の異常です。 構文通りに入力されているか確認してください。 |
2 | 重複するオプションが指定されています。 該当するオプションを削除してください。 |
3 | サンプリング周期が不正な値です。 入力可能範囲は整数型intが基準になるので、1~ 2147483647の間です。小数はサポートしません。 |
4 | 出力pngのファイルパスが正しくありません。 フルパスで記述してください。相対パスではエラーになります。 如何なるオプションを付けた場合でも、絶対パス.pngと指定してください |
5 | 不明なオプションです。引数として何かしら入力されているのですが、引数のどれかが不明なオプションになっています。スペルを間違っている可能性が高いので、ミスがないかよく確認してください。 |
依存パッケージがインストールされていない場合
エラーコードなどは表示されませんが、画像が出力できません。"--nograph"オプションを用いた場合のみgnuplotが不要ですが、それ以外の場合は必ずインストールしてください。
使用例
例.
tmchk 3 3 /home/pi/test.png
のように入力します。上の例の場合だと3秒毎にデータを取得、3分間ログをとる設定です。
出力結果
赤い線が温度(°C)、青い線がCPU使用率(%)、緑色の線がCPU動作周波数(MHz)です。
オプションの"--separate"を用いた場合は以下のように使います。
tmchk 1 1 /home/pi/test.png --separate
実行結果は以下の4つのグラフを得ることができます。
出力CSVファイルの例を以下に示します。
time,CPU_temperature,CPU_usage,CPU_frequency
0,39.00,11,1000.00
1,39.00,8,1500.00
2,40.00,10,750.00
3,39.00,9,750.00
4,41.00,11,750.00
5,39.00,9,750.00
6,40.00,10,750.00
7,39.00,7,1500.00
8,39.00,7,750.00
9,40.00,8,1500.00
10,39.00,7,750.00
11,40.00,10,750.00
12,39.00,11,1500.00
13,39.00,9,1500.00
14,40.00,10,750.00
15,39.00,10,1500.00
16,39.00,15,750.00
17,39.00,10,750.00
18,39.00,10,750.00
19,40.00,10,1500.00
20,40.00,11,750.00
21,40.00,10,1500.00
22,40.00,10,750.00
23,40.00,7,1000.00
24,39.00,9,1500.00
25,39.00,10,600.00
26,39.00,6,1500.00
27,40.00,9,1500.00
28,40.00,9,1500.00
29,41.00,11,750.00
30,39.00,9,1500.00
31,40.00,9,1500.00
32,40.00,10,750.00
33,39.00,7,750.00
34,40.00,10,1500.00
35,39.00,12,750.00
36,40.00,8,1500.00
37,39.00,9,750.00
38,39.00,10,750.00
39,40.00,7,600.00
40,39.00,6,600.00
41,39.00,7,600.00
42,40.00,6,750.00
43,40.00,5,750.00
44,40.00,6,600.00
45,39.00,32,750.00
46,40.00,11,750.00
47,40.00,9,1500.00
48,39.00,10,600.00
49,39.00,9,750.00
50,40.00,10,1500.00
51,40.00,11,750.00
52,39.00,10,750.00
53,39.00,10,600.00
54,38.00,10,750.00
55,39.00,9,1500.00
56,39.00,11,750.00
57,40.00,7,1500.00
58,39.00,9,1500.00
59,39.00,11,600.00
tmchkおよび依存パッケージのアンインストール
アンインストール時は以下の流れに従って削除してください。
インストール場所は/usr/local/bin/tmchkとなっているので、本体を削除します。以下のコマンドにより実行できます。
sudo rm /usr/local/bin/tmchk
また依存パッケージの「gnuplot」を一緒にインストールした場合のみ以下のコマンド実行します。
sudo apt-get remove -y --purge gnuplot
これアンインストールは完了です。
リクエスト、ご意見など
コメントは逐一拝見させていただきます。GitHubのほうはリクエストに対する返信などもしやすいです。助かった、便利だったなどささいなことでも私には非常に活力になりますのでお待ちしております。
このtmchkをもしご紹介いただけるのでしたら、リンクはここに飛ばしていただくのは大歓迎です。むしろお願いしたいぐらいですね笑。
その他の細かい仕様
バージョンが次々と更新されていますが、GitHubには古いバージョンのリリースなども残してあるので必要であればそちらから旧ファイルを使用して頂いても大丈夫です。内部的には処理を変更しているものがあるので、どうしてもうまく動作しないなどあれば旧バージョンを使ってみて下さい。
更新履歴
2020/7/31:ver 0.01a リリース
2020/8/17:ver 0.01b 100パーセントになると線が見切れてしまう(黒い線と重なってしまう)問題の修正
2020/8/20:ver 0.02a "--separate"オプションを追加。
2020/8/21:ver 0.02b CPU周波数のグラフタイトルを変更、その他軽微な変更
2020/8/26:ver 0.03a CSVファイルの出力に対応
2020/8/29:ver 0.04a "--nograph" , "--nocsv" オプションを追加、エラーコードに関する記述を追加、確認しているエラー発生時の対処法を追加、gitを用いらないインストール方法を追加
2020/9/4:ver 0.10a "--realtime_all" , "--realtime_temp" , "--realtime_usage" , "realtime_freq"オプションを追加、エラーコード更新に伴い加筆、処理の最適化および一部ソースコードの整理を実施。
THUN 2020.9.4 ver 0.10a
tmchkのGitHub
https://github.com/T-H-Un/tmchk
他のツールはこんなものも用意しています。