カーネル 5.11 以降の最適化により、アイドル状態の CPU は /proc/cpuinfo で 800 MHz と表示されます。正確な周波数の読み取りには、cpupower または turbostat を使用してください。
問題の説明
インスタンスがアイドル状態の場合、/proc/cpuinfo ファイルは一部の CPU の周波数を 800 MHz とレポートすることがあります。この値は、以下に示すように、インスタンス仕様に記載されている周波数とは異なります。
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 2996.976
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 3192.046
cpu MHz : 800.000
cpu MHz : 3200.000
cpu MHz : 800.000
cpu MHz : 2975.717
cpu MHz : 800.000
cpu MHz : 3005.653
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
cpu MHz : 800.000
このソリューションは、以下のカーネルおよびオペレーティングシステムにも適用されます。
原因
Linux カーネル 5.11 以降、システムパフォーマンスと CPU 応答を向上させるためのパッチ (コミット ID: 3fcd6a230fa7d03bffcb831a81b40435c146c12b) が追加されました。
x86/cpu: Avoid cpuinfo-induced IPIing of idle CPUs
Currently, accessing /proc/cpuinfo sends IPIs to idle CPUs in order to
learn their clock frequency. Which is a bit strange, given that waking
them from idle likely significantly changes their clock frequency.
This commit therefore avoids sending /proc/cpuinfo-induced IPIs to
idle CPUs.
/proc/cpuinfo にアクセスすると、rcu_is_idle_cpu 関数は CPU がアイドル状態であるかどうかを確認します。アイドル状態の場合、この関数はデフォルトで 800 MHz の min_freq を返します。一部のカーネルバージョンでは、この min_freq の値が CPU ベース周波数としてレポートされます。
ソリューション
表示されるアイドル状態の周波数は仕様と一致しない場合がありますが、CPU は負荷時に指定された周波数に達するため、実際のパフォーマンスに影響はありません。
正確な周波数の読み取りには、cpupower や turbostat などのツールを使用してください。
例えば、cpupower を実行して周波数を確認します。
sudo cpupower frequency-info
出力は、現在の CPU 周波数が 3.20 GHz であることを示しています。
[ecs-user@iZ2zxxx187kyZ ~]$ sudo cpupower frequency-info
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: Cannot determine or is not supported.
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 "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 3.20 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
一部のインスタンスタイプでは、この周波数クエリがサポートされていない場合があります。ご利用のインスタンスのベース周波数については、「インスタンスファミリーの概要」をご参照ください。