PCで遊んだ日々の備忘録

Making PC and Customization PC

Ubuntu で CPU負荷テストをやってみた

先月製作した PCを こちらのページ で紹介しました。OSの1つに Ubuntu 16.04LTSを導入してるのですが CPUコア温度とファン回転数がシステムモニター Conkyに表示できていませんでした。

これまで他の PC - Linux OSで使用していた Conky設定ファイルのコードが今回のハードウェア環境に合っていなかったようです。

しかし調査と試行錯誤の結果、コードの書き方を変更することで表示することができました。

下の画像は 端末エミュレータに表示した sensorsの値 , Conky設定ファイルそしてデスクトップに表示した Conkyのスクリーンショットです

このように CPUコア温度 , CPUクーラーファンとPCケースの排気・排熱用ファンの回転数が表示できたので CPUに負荷をかけてコアの温度上昇とファン回転数をモニタリングしてみました。

このページでは Conky設定ファイルの書き方と CPUの負荷テストの方法も合わせて掲載しています。(2017/12)

テスト環境

  • PC(自作機)| スリムタワー型
  • OS | 実機上の Ubuntu 16.04.3LTS x86_64
  • CPU | Intel® Core™ i7 2600 Sandy Bridge
  • GPU | NVIDIA GeForce® GT710
  • CPUクーラーファン | 80mm(4ピン): PWM・1,500~2,500rpm
  • PCケースファン | 92mm(3ピン): 1,500rpm

▲ 目次へ

導入したアプリケーションパッケージ

Conkyにハードウェア情報を表示させるために次のアプリケーションパッケージをインストールしました。

conky-all 取得したハードウェア情報をデスクトップに表示する
lm-sensors CPU , ファンの情報を取得する
nvidia-settings GPUの温度を取得する
hddtemp HDDの温度を取得する

hddtempはインストール後にデーモン設定が必要です

次のアプリケーションパッケージは CPUの負荷テストに使用しました。

xsensors sensors-detectで取得した情報をダイアログボックスで表示する
stress CPU , HDD , メモリーに負荷をかける

xsensorsは lm-sensorsのインストール後 sensors-detect コマンド実行で取得した情報をダイアログボックスで表示するアプリです。刻々と変化する情報をリアルタイムで表示します。

▲ 目次へ

アプリケーションパッケージのインストール

上表のパッケージは何れも Synapticパッケージマネージャからインストールできます。ただし nvidia-settingsは NVIDIAのプロプライエタリドライバーを導入していれば既にインストールされています。

端末エミュレータ(以降端末と表記)からは

 $ sudo apt-get install パッケージ名

を実行すればインストールできます。キータイピングに自信があればパッケージ名の後にスペースを入れてパッケージ名をつなげていけば一度に全てのパッケージをインストールできます。

▲ 目次へ

Conky設定ファイルにコードを記述する

このセクションでは CPU温度 , CPUクラーファンの回転数 , PCケース排熱ファンの回転数をデスクトップに表示させるコードを Conky設定ファイルである .conkyrc に記述します。

その前に こちらのページ を参考にして次の設定をしておきます。

  1. lm-sensorsインストール後 sensors-detectを実行する
  2. hddtempがデーモン起動するように設定する
  3. デスクトップが起動するとConkyも自動的に起動するように設定する

1.は必須条件です。2.3.は今回の趣旨には関係しませんので設定してもしなくてもかまいません。

それではまず sensors-detectコマンドで取得した今回の自作PCの情報を表示しておきます。ファン回転数は端末から

 $ sensors |grep fan
(結果)
 fan1:                     0 RPM  (min =    0 RPM)
 fan2:                  1618 RPM  (min =    0 RPM)
 fan3:                     0 RPM  (min =    0 RPM)
 fan4:                   882 RPM  (min =    0 RPM)
 fan5:                     0 RPM  (min =    0 RPM)
 cpu_fan:        0 RPM

ASUSマザーボードのPCでは表示されません。その理由と表示させたい場合は こちら を参照してください。

CPUの温度は

 $ sensors |grep core
(結果)
 Core 0:        +30.0°C  (high = +80.0°C, crit = +98.0°C)
 Core 1:        +26.0°C  (high = +80.0°C, crit = +98.0°C)
 Core 2:        +28.0°C  (high = +80.0°C, crit = +98.0°C)
 Core 3:        +29.0°C  (high = +80.0°C, crit = +98.0°C)
 

この結果をメモしておいてパソコンを再起動して BIOSのモニター情報と合っていることを確認しておきます。

大きな違いがなければ上の結果を元に .conkyrcにコードを記述します。

ファン回転数を表示するコード

ファン回転数の表示は以下のようなコードになります。1行目が CPUクーラーファンで 2行目がPCケース内の排気・排熱用ファンです。

 ${color darkgreen}CPU:${color blue} ${alignr}${execi 5 sensors | grep 'fan2' | cut -c24-27} rpm
 ${color darkgreen}Cace:${color blue} ${alignr}${execi 5 sensors | grep 'fan4' | cut -c24-27} rpm
 

ちなみに 1行目を訳すと

(色暗緑)CPU:(以下色青),(右寄せ),(5秒間隔で sensorsにアクセスし fan2の24列目~27列目の数値を表示)

となります。列の数え方は左側先頭の文字を 1から始めます。(下の画像参照 : 赤字の部分が表示させたい数値)

CPUコア温度を表示するコード

CPUコア温度の表示は以下のようなコードになります。

 ${color darkgreen}CPU(Core i7 2600):${color blue} ${alignr}${execi 5 sensors | grep 'Core 0' | cut -c17-18}℃
 

これを訳すと

(色暗緑)CPU(Core i 7 2600):(以下色青),(右寄せ),(5秒間隔で sensorsにアクセスし Core 0 の17列目 , 18列目の数値を表示)

のとなります。

結果

下の画像は今回作成した .conkyrcで表示した Conkyのスクリーンショットです。背景が赤いのは Conkyを透過表示しているので Ubuntuのデスクトップの色が透けて見えているためです。

今回作成した Conky設定ファイル「.conkyrc」download

2018年6月追記|Conkyの設定ファイル .conkyrcの構文書式がバージョン 1.10以降変更されています。以前の設定ファイルを使用すると正常に表示されません。詳細は こちらのページ

▲ 目次へ

CPUの負荷テスト | CPUの温度上昇とファン回転数の動き

先月製作したスリムタワー型PCで採用している CPUクーラーのファンは PWM による電圧制御で回転数が変化するファン(4ピン)です。CPUの温度変化に追従して回転数が増減します。

また PCケースの排熱用に採用しているファンは 3ピンですがマザーボードの仕様で電圧制御により回転数が変化します。こちらも CPUの温度変化に追従して回転数が増減します。

このように CPUコアの温度変化と、これにリンクしてファン回転数が増減速する様子を同時に見ることができないものかと思ったことがあるのは管理人だけではないと思います。

そこでこのセクションでは XSensorsと Stressの 2つのアプリを使って Ubuntuのデスクトップにその様子を表示させてみました。

事前に lm-sensorsをインストール , sensors-dedectを実行して sensorsにハードウェア情報を認識させておく必要があります

まずは 2つのアプリのインストールします。端末から

 $ sudo apt-get install xsensors stress

次に XSensorsを起動して coretempを表示させ端末から以下のコマンドを実行します。

 $ stress --cpu 8 --timeout 90s

このコマンドを訳すと

(stressアプリで CPUに 8個のプロセスで負荷を 90秒間かける)

となります。プロセスの数によって CPU負荷率を調整できます。当方の環境では 8個で 100%の負荷になりました。下の画像 fig1が負荷をかける前のアイドル時で fig2がコマンド実行中のスクリーンショットです。

CPU無負荷時のXSensors , Conky , 端末の画像

fig1. CPU無負荷時

CPU負荷実行中のXSensors , Conky , 端末の画像

fig2. CPU負荷実行中

CPU負荷テストの結果は以下の通りです。

  • 室温 , 湿度 | 18.5℃ , 50%
CPU温度 31℃ → 69℃
CPUクーラーファン(1,500rpm ~ 2,500rpm) 1,622rpm → 2,356rpm
PCケースファン(1,500rpm) 871rpm → 1,440rpm

以上が今回行った CPU負荷テストの結果です。

▲ 目次へ

雑感

このページを書いているときに偶然 Ubuntuのデスクトップをビデオキャプチャできるアプリを発見したので早速使ってみました。CPUコア温度の変化にリンクしてファン回転数が増減する様子が確認できます。

インストールはリポジトリを追加してから行います。端末から

 $ sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
 $ sudo apt-get update
 $ sudo apt-get install simplescreenrecorder

を実行すれば OKです。

なお Ubuntu 17.04 以降は Ubuntuの公式リポジトリに入っているので

 $ sudo apt-get install simplescreenrecorder

だけを実行すれば OKです。

下の映像は上述の CPU負荷テストの様子をキャプチャーしたものです。

映像はカット編集していないので再生時間は 3分と長いです。気が向いたらカップラーメンの待ち時間にでも観てください。

▲ 目次へ

追記|ファン回転数 , 電圧が Conky表示出来ないときは(2018年5月)

このテストに使用したスリムPCの HDDに Ubuntu 18.04LTS を最小インストールしたところファン回転数が Conkyに表示されませんでした。

下の画像がその時のデスクトップスクリーンショットです。

原因は ASUS製マザーボード用のカーネルモジュール(デバイスドライバー)がロードされずファン回転数と電圧の値が取得出来ていないためです。

lm_sensors-ArchWiki によれば

一部の Asus マザーボードでは、ファンや電圧センサにアクセスするのに NCT6775 モジュールが必要です:

とのこと。

解決方法は lm_sensorsの設定ファイル /etc/modules に nct6775 を記述することでモジュールはロードされます。通常 sensors-detectを実行すると自動的に記述されるのですが何故か記述されていませんでした。

まずは NCT6775モジュールがカーネルに組込まれていることを確認します。端末から

 $ sudo modprobe nct6775
 $ sensors

を実行すると下の画像のように NCT6775モジュールがロードされて電圧とファン回転数が取得され Conkyにも表示されました。(電圧は意図的に表示させていません)

次に /etc/modules に NCT6775 を記述します。端末から

 $ sudo nano /etc/modules

を実行し

 nct6775
 

と記述して保存します。下の画像は /etc/modulesファイルのスクリーンショットです。

これでOS起動プロセスの中でロードされます。

カーネルドライバ NCT6775 について補足

NCT6775はマザーボードに実装されるセンサーチップ( Nuvoton NCT6102D , NCT6104D , NCT6106Dなど)のドライバーで、台湾の半導体メーカー Nuvoton Technology社が提供しています。

▲ 目次へ

クリエイティブ・コモンズ・ライセンス
Top of Pageの画像
sidemenuの画像