ラップトップ(Intel(R)Core(TM)i7-4810MQ CPU @ 2.80GHz)のCPU周波数スケーリングが意図したとおりに機能しません。 ubuntu 16.04の初期インストール後、電源管理またはCPU周波数スケーリングに関して変更を加えていません。通常、私はオンデマンドガバナーに慣れています。ただし、このガバナーは、新しいカーネルの一部のpstateやpowersaveガバナーに置き換えられたようです。
負荷がなくてもCPU周波数は2.xの範囲で推移するため、ファンがうるさくなり、デバイスが熱くなります。
$ cat /proc/cpuinfo |grep -i mh
cpu MHz : 3435.468
cpu MHz : 2245.468
cpu MHz : 2800.218
cpu MHz : 2338.765
cpu MHz : 2800.546
cpu MHz : 2801.203
cpu MHz : 2800.875
cpu MHz : 2000.140
$ uptime
14:57:49 up 5:15, 1 user, load average: 0,01, 0,08, 0,16
$ cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 1:
driver: intel_pstate
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 2:
driver: intel_pstate
CPUs which run at the same hardware frequency: 2
CPUs which need to have their frequency coordinated by software: 2
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.79 GHz.
analyzing CPU 3:
driver: intel_pstate
CPUs which run at the same hardware frequency: 3
CPUs which need to have their frequency coordinated by software: 3
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 4:
driver: intel_pstate
CPUs which run at the same hardware frequency: 4
CPUs which need to have their frequency coordinated by software: 4
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.80 GHz.
analyzing CPU 5:
driver: intel_pstate
CPUs which run at the same hardware frequency: 5
CPUs which need to have their frequency coordinated by software: 5
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.78 GHz.
analyzing CPU 6:
driver: intel_pstate
CPUs which run at the same hardware frequency: 6
CPUs which need to have their frequency coordinated by software: 6
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.90 GHz.
analyzing CPU 7:
driver: intel_pstate
CPUs which run at the same hardware frequency: 7
CPUs which need to have their frequency coordinated by software: 7
maximum transition latency: 0.97 ms.
hardware limits: 800 MHz - 3.80 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 3.80 GHz.
The governor "powersave" may decide which speed to use
within this range.
current CPU frequency is 2.79 GHz.
不思議なことに、私は逆の動作も観察しました:マシンは高負荷下にありましたが、周波数は約2分の1まで減少していました。 20〜30秒で、すべてのコアが約800MHzに達しました。私はcpufreq-infoで確認しましたが、構成は問題ないようです(節電ガバナー、適切なレベルでの最小/最大周波数)。残念ながら、エラーを再現できません...
これらのスケーリングの問題の原因は何ですか、またはそれらを修正するために何ができるでしょうか?
概要
はい、特定の条件下で、現在のバージョンのintel_pstateドライバーは、かなり軽い負荷でCPU周波数を上げることができます。ただし、通常は、これにより「ファンが騒がしくなり、デバイスが熱くなる」ことはありません。これは、関連するCPUの動作が速くなり、ディープスリープ状態により多くの時間を費やして、より高い有効電力に対抗するためです。私はこれまで、パッケージの電力の約1/2ワットをこの問題に起因させることができただけです。
質問の2番目の部分については、高負荷でCPU周波数を下げることについてです。何らかの種類のサーマルスロットリングが関係していると推測できます。
詳細
「負荷なし」または「アイドル」を定義することは非常に重要です。どうして? GUIベースのシステムでは、「アイドル」には実際に行うべき作業がかなりあります。非GUIサーバーベースのシステムでは、「アイドル」は通常、実行する作業がほとんどないことを意味します。
GUIベースのシステムでは、この問題の発現は以下に依存します。カーネルのHzレート(100、250、300、または1000 Hz)。ビデオドライバーのフレームレート。どれだけのバックグラウンドが起こっているか。スケジューラーがCPU間でローテーションする方法。私が今忘れている他のいくつかのこと。
一時的な修正が追加されましたが、実際の負荷は1%以下しかカバーしていませんが、1%を超える負荷でもこの状態が発生する可能性があります。また、その修正が現在の16.04カーネルにあるのか、それともバックポートされているのかはわかりません。
より良い修正が進行中ですが、それがリリースされる前のいつかになります。
それまでは、必要に応じてacpi-cpufreqドライバーに戻ることができます。 here または here を参照してください。
参照資料
https://bugzilla.kernel.org/attachment.cgi?id=187781
https://bugzilla.kernel.org/show_bug.cgi?id=93521
https://bugzilla.kernel.org/show_bug.cgi?id=115771
http://marc.info/?l=linux-pm&m=147000845531378&w=2
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=ffb810563c0c049872a504978e06c8892104fb6c