CPU 周波数の調節

Ubuntu 14.04 LTS で、CPU 周波数の自動調節機能 Enhanced Speed Step Technology (EIST) がうまく動作していないことに気づいた。Core i7-3970X でも Core i7 870 でも同様だ。/proc/cpuinfo を見ると、いつも(TurboBoost 前の)最高周波数で動いているようだ。以前の Ubuntu ではきちんと動いていた記憶があるのだが……

調べたところ、cpufreqd 自体は問題なく動いているが、その設定が不適切であることが判明。cpufreq-info コマンドで調べると、

  maximum transition latency: 10.0 us.
  hardware limits: 1.20 GHz - 3.50 GHz
  available frequency steps: 3.50 GHz, 3.50 GHz, 3.30 GHz, 3.20 GHz, 3.00 GHz, 2.80 GHz, 2.70 GHz, 2.50 GHz, 2.30 GHz, 2.20 GHz, 2.00 GHz, 1.90 GHz, 1.70 GHz, 1.50 GHz, 1.40 GHz, 1.20 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance

current policy: frequency should be within 3.50 GHz and 3.50 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.

のように、最高周波数と最低周波数が一緒になっている。ここで表示されているリストから選んで、

cpufreq --min 1.2 --cpu 0 

のようにすれば設定変更が可能。--cpu はコア番号で、全てのコアについて操作する必要がある。

これを起動時に自動で行うには、/etc/init.d/cpufrequtils が参照する /etc/default/cpufrequtils に

MIN_SPEED="1.2"

と書いておけばよい。

参考: kernel - How to change default scaling governor back to ondemand - Ask Ubuntu