さまざまなクロック速度で複数のコアを実行できますか?

さまざまなクロック速度で複数のコアを実行できますか?

私が見ているIntel i5システムのコアは、同じクロック速度でのみ実行できます。/sys/devices/system/cpu/cpu1/cpufreq/related_cpusすべてのCPUがリストされています。予想通り、CPU1のクロック速度を設定すると、CPU0のクロック速度が変化する。

おそらく、私が実行しているAMD A6-4400Mシステムは、各コアを異なるクロック速度で実行できるはずです。/sys/devices/system/cpu/cpu1/cpufreq/related_cpuCPU1のみがリストされています。 Performance Tunerを使用してcpu1のクロック速度を設定し、echo 1400000バックを実行すると、scaling_max_freqcpu0のクロック速度は予想どおり2700000になります。 CPU1 の scale_cur_freq は予想通り 1400000 を読み込みます。

ただし、CPU1はcpuinfo_cur_freq2700000を読み取ります。ベンチマークを見ると、CPU1は実際には2.7 GHzで動作しています。私が何かを見逃しているのでしょうか、それとも何かが壊れていますか?

私はLinux 2.6.35を実行しており、idle=mwaitカーネルコマンドラインを渡しています。

ベストアンサー1

まだ明確な答えではありません。代わりに、これはレビューに合うには長すぎる提案のセットです。

sysfs cpufreqパラメータの意味を少し誤解する可能性があります。たとえば、私コアデュアルコアノートブックでは、related_cpu2つのコアのパラメータが読み取られます0 1。説明によると、これはコアが独立して周波数を切り替えることができないことを意味します。しかし、そうではありません。各周波数を好きなように設定できます。対照的に、affected_cpus各コアのパラメータには対応するCPU番号のみが一覧表示されます。

よりよく理解するには、CPU-freq affected_cpusrelated_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.353.6.2
  • cpufreqCPU(またはスイート全体)の実装で誤った結果が発生します。
  • performanceCPUガバナーの実装に固有です2.6.35

さらなる調査のために取ることができるいくつかのステップは次のとおりです。

  • user-guide.txtその他のパラメータを読み、調整してくださいcpufreq
  • 最新のカーネルを実行しながらテストを繰り返します。最も簡単な方法はliveCD / DVD / USBを起動することです。

予期しない動作が引き続き発生し、バグが原因であると信じる理由がさらに多い場合(最新のマイナーカーネルバージョンを必ず確認する必要がある)、この問題を報告してください。kernel.org バグジラ

おすすめ記事