私が見ているIntel i5システムのコアは、同じクロック速度でのみ実行できます。/sys/devices/system/cpu/cpu1/cpufreq/related_cpus
すべてのCPUがリストされています。予想通り、CPU1のクロック速度を設定すると、CPU0のクロック速度が変化する。
おそらく、私が実行しているAMD A6-4400Mシステムは、各コアを異なるクロック速度で実行できるはずです。/sys/devices/system/cpu/cpu1/cpufreq/related_cpu
CPU1のみがリストされています。 Performance Tunerを使用してcpu1のクロック速度を設定し、echo 1400000バックを実行すると、scaling_max_freq
cpu0のクロック速度は予想どおり2700000になります。 CPU1 の scale_cur_freq は予想通り 1400000 を読み込みます。
ただし、CPU1はcpuinfo_cur_freq
2700000を読み取ります。ベンチマークを見ると、CPU1は実際には2.7 GHzで動作しています。私が何かを見逃しているのでしょうか、それとも何かが壊れていますか?
私はLinux 2.6.35を実行しており、idle=mwait
カーネルコマンドラインを渡しています。
答え1
まだ明確な答えではありません。代わりに、これはレビューに合うには長すぎる提案のセットです。
sysfs cpufreqパラメータの意味を少し誤解する可能性があります。たとえば、私コアデュアルコアノートブックでは、related_cpu
2つのコアのパラメータが読み取られます0 1
。説明によると、これはコアが独立して周波数を切り替えることができないことを意味します。しかし、そうではありません。各周波数を好きなように設定できます。対照的に、affected_cpus
各コアのパラメータには対応するCPU番号のみが一覧表示されます。
よりよく理解するには、CPU-freq affected_cpus
、related_cpus
およびscaling_*
パラメータに関するカーネル文書を確認することをお勧めしますcpuinfo_*
。このドキュメントは通常、カーネルソースコードパッケージとともに配布されます。特に、私は読書をお勧めします<kernel-sources-dir>/Documentation/cpu-freq/user-guide.txt
、これは<kernel-sources-dir>
通常またはを/usr/src/linux
表します/usr/src/linux-<kernel-version>
。 (しかし、今すぐドキュメントを見てみると、周波数スケーリングに関連するいくつかのニュアンスが欠落していることを認めています。これを完全に理解するためには、まずCPUアーキテクチャの確実な理解が必要になるかもしれません。)
あなたの質問に戻ります。また、テストケースもあります。値scaling_max_freq
(調整器を使用userspace
または調整器を使用performance
)を変更すると、コアクロックが自動的に新しい最大値に切り替わります。観察される様々な挙動は、次のいずれかであり得る。
- CPUの周波数スケーリングメカニズムの特定のハードウェア実装、
cpufreq
標準モジュールとphc-intel
私が使用するモジュールの違いにより、- (現在のカーネルバージョンは)
cpufreq
後のある時点で変更されたモジュールの通常の動作(必要に応じてバグまたは機能と呼んでください)、2.6.35
3.6.2
cpufreq
CPU(またはスイート全体)の実装で誤った結果が発生します。performance
CPUガバナーの実装に固有です2.6.35
。
さらなる調査のために取ることができるいくつかのステップは次のとおりです。
user-guide.txt
その他のパラメータを読み、調整してくださいcpufreq
。- 最新のカーネルを実行しながらテストを繰り返します。最も簡単な方法はliveCD / DVD / USBを起動することです。
予期しない動作が引き続き発生し、バグが原因であると信じる理由がさらに多い場合(最新のマイナーカーネルバージョンを必ず確認する必要がある)、この問題を報告してください。kernel.org バグジラ。