【Ubuntu】cpufrequtilsでCPUのクロック制御して、間接的にファンの制御。

Lenovo の Ryzen 搭載ミニデスクトップ・M715q Tinyに Ubuntu をインストールして使っています。

このマシン、冷却ファンが突然に全開でブン回る。もう離陸するんじゃないか、と思うくらいの全開っぷり。あまりにも煩いのでファンの回転数を制御しようといろいろ調べた結果、OS からファンを直接制御するのは不可能っぽい、と判明。

さて、どうしよう。

とりあえず CPU の温度を測ってみる。すると…

  1. 普段は30℃台で安定。
  2. 何かの拍子にクロック周波数が最高値で働きはじめる。
  3. と、一瞬で温度が50℃を超える。
  4. 冷やそうと思ってファンが頑張って回りはじめる。
  5. 温度が30℃台まで落ちても、ファンはなかなか回転数を落とさない。
  6. 煩い!

…ということのようです。

他にもいろいろ観察してみると、うちのマシンでは CPU が最高クロックで動作しなければ、突発的、且つ急激な温度上昇は抑えられそう = ファンの回転数上昇も抑制できそう。なので、CPUにリミッタをかけてやることにしましょ。

cpufrequtilsをインストール。本来は省電力目的で CPU の動作制御を行うサービスですが、今回は温度上昇を抑えるために利用します。

$ sudo apt install cpufrequtils

インストールが済んだら、コマンド:cpufreq-infoで現在の CPU の情報を確認。

$ cpufreq-info

出力は以下のような感じ。うちの CPU は4コア8スレッドなので、"CPU 0" から "CPU 7" までの情報が表示されます。

cpufreq-info-01.png

"available frequency steps" と "available cpufreq governors" のところの値をメモ。現在の設定値は赤枠で囲った部分で確認できます。

次に、設定ファイル:/etc/default/cpufrequtils を作成。

$ sudo nano /etc/default/cpufrequtils

…で、エディタを起動。ファイルの中身は以下を記述。

ENABLE="true"
GOVERNOR="powersave"
MAX_SPEED=2.30GHz
MIN_SPEED=1.60GHz

書いたら、Ctrl+X y でファイルを /etc/default/cpufrequtils に保存。

設定ファイルの雛形と簡単な説明は /usr/share/doc/cpufrequtils/examples/cpufrequtils.sample にあります。

cpufrequtilsサービスを再起動。

$ sudo service cpufrequtils restart

以上。

設定が反映されたか、cpufreq-infoコマンドで確認すると…、

cpufreq-info-02.png

ちゃんと設定できています。

先述の設定ファイルで ENABLE="true" としておいたので、OSの起動時にこの設定が適用される筈です。ただし、他の CPU 動作制御サービス(cpufreqd)などがアクティブだと混乱の元なので、それらが動作しているようならストップさせておきましょう。

すぐに止めるときは、

$ sudo service cpufreqd stop

OS起動時に自動起動しないようにするには、

$ sudo systemctl disable cpufreqd

ということで。

カテゴリ: