Ubuntu Weekly Recipe

第697回 AMD Ryzen 7 5800Xで学ぶ,Ubuntuにおけるシステムの動作確認

この記事を読むのに必要な時間:およそ 12 分

システムのモニタリング

動作確認やベンチマークを行う際は,温度センサーなどをモニタリングしながら実施しましょう。これによりサーマルスロットリングなどによる性能低下が起きたかどうかを視覚的に把握でいます。

GUIで各種センサーを表示してくれる「psensor」

Ubuntuデスクトップには最初から「システムモニター」がインストールされています。これを使えば,CPUやメモリー,ネットワークの使用率をリアルタイムに表示してくれます。これだけでもある程度のことはわかるものの,できれば温度センサーの情報は取得したいところです。GUIでの定番はpsensorです。

$ sudo apt install lm-sensors psensor

まず最初に,温度や電圧,ファンの回転速度センサーの情報を取得できるようにしておきましょう。これは一般的に「lm-sensors」パッケージに含まれる,sensors-detectコマンドを使います。温度や電圧などのデバイスはi2cデバイスとして実装されていることが多いです。しかしながらACPIテーブルにこれらのデバイスがリストアップされておらず,必要なモジュールがロードされていないこともよくあります。そこでsensors-detectコマンドを用いて,システム上の監視対象のデバイスをリストアップし,必要なモジュールをロードしておきましょう。

$ sudo sensors-detect
(中略)
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
nct6775
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)

Unloading cpuid... OK

途中でいくつか質問されますが,基本的にEnterを押して設定された回答を選んでおけば大丈夫です。最後のcut hereの間の内容がロードに必要なモジュールのリストです。一時的にロードしてみたいだけならsudo modprobe モジュール名を実行すれば完了です。ただし次回再起動後はロードされていない状態で起動しています。

起動時に常にロードしたい場合は,/etc/modules-load.d/sensors.confなどの適当な名前のファイルを作ってそこに記載しておきましょう。設定したら次のコマンドを実行することで,自動的にロードされます。

$ sudo systemctl restart systemd-modules-load.service

sensorsコマンドを使うと,その時点でのセンサー情報を表示してくれます。

$ sensors
nct6798-isa-0290
Adapter: ISA adapter
in0:                   200.00 mV (min =  +0.00 V, max =  +1.74 V)
in1:                     1.69 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in2:                     3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in3:                     3.33 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                     1.83 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                   992.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in6:                     1.20 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in7:                     3.44 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in8:                     3.25 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in9:                   912.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                    1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                  624.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                    1.08 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                  912.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                  912.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                     0 RPM  (min =    0 RPM)
fan2:                     0 RPM  (min =    0 RPM)
fan3:                   867 RPM  (min =    0 RPM)
fan4:                     0 RPM  (min =    0 RPM)
fan5:                     0 RPM  (min =    0 RPM)
fan6:                   719 RPM  (min =    0 RPM)
fan7:                   733 RPM  (min =    0 RPM)
SYSTIN:                 +22.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
CPUTIN:                 +20.0°C  (high = +80.0°C, hyst = +75.0°C)  sensor = thermistor
AUXTIN0:                +15.0°C    sensor = thermistor
AUXTIN1:                -62.0°C    sensor = thermistor
AUXTIN2:                +13.0°C    sensor = thermistor
AUXTIN3:                +31.0°C    sensor = thermistor
SMBUSMASTER 0:          +20.0°C
PCH_CHIP_CPU_MAX_TEMP:   +0.0°C
PCH_CHIP_TEMP:           +0.0°C
PCH_CPU_TEMP:            +0.0°C
intrusion0:            ALARM
intrusion1:            ALARM
beep_enable:           disabled

nouveau-pci-0900
Adapter: PCI adapter
temp1:        +25.0°C  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +105.0°C, hyst =  +5.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

nvme-pci-0100
Adapter: PCI adapter
Composite:    +21.9°C  (low  =  -0.1°C, high = +83.8°C)
                       (crit = +87.8°C)
Sensor 1:     +26.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +21.9°C  (low  = -273.1°C, high = +65261.8°C)

k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +20.2°C
Tdie:         +20.2°C
Tccd1:        +21.0°C

センサーの情報を取得できるようになったら,あとはpsensorを起動するだけです。もしかすると最初はセンサー名しか表示されないかもしれません。一旦ウィンドウを最大化するとグラフ表示部分が表示されるようになります。それでも表示されない場合は,センサーリストの左端(ウィンドウの左端)あたりをクリックして左右にドラッグしてみると,グラフ表示部分が出てきます。

図11 psensorによる温度・電圧・ファンのモニタリング

図11

データはリアルタイムで取得しているのですが,描画のインターバルは長めです。すぐに再描画したい場合は,グラフ領域を何回かクリックしてみると良いでしょう。

Web UIも備えたCLI版モニタリングツール「glances」

glancesはtopライクなUIを備えた,高機能なモニタリングツールです。topのようなプロセスやメモリーだけでなく,各種センサー,割り込み,ネットワークなどさまざな情報を取得・表示してくれます。

Ubuntuのリポジトリだけでなく,snapパッケージも用意されているため,好きなほうを使うと良いでしょう。

$ sudo apt install glances

あらかじめ前述のsensors-detectコマンドを用いて,必要なモジュールをロードしておきましょう。あとはglancesコマンドを実行するだけです。

$ glances

図12 glancesによるCLIでのモニタリング

図12

glancesにはプラグイン機能が存在し,--enable-pluginsにカンマで複数つなげてプラグインを有効化できます。たとえばセンサー系は最初は無効化されているため,次のように実行することで表示されるようになります。

$ glances --enable-plugins sensors

有効化できるプラグインはglances --modules-listで確認できます。

glancesはWeb UIも備えています。glances -wと実行するとURLが表示されるので,ウェブブラウザーでそこにアクセスしてみましょう。キーボードショートカットはCLI版と同じです。

図13 glancesによるWebでのモニタリング

図13

またglancesには,さまざまなフォーマット・サービス向けにログを出力する機能が存在します。バックグラウンドで動かしながら,他のデバイスで状態を確認するような使い方も可能なのです。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。