2012-06-19 22 views
7

いくつかのスレッドの頻度を制御するためにLinuxカーネルを拡張しています。コア(任意のコア!)にスケジューリングされている場合、コアの周波数は適切なp Intelのマニュアルに示唆されているように、レジスタIA32_PERF_CTLにステートしてください。 しかし、異なる "カスタム"周波数を持つスレッドがスケジュールされている場合、すべてのコアが最大設定頻度で実行されているかのように、すべてのスレッドのスループットが増加するように見えます。スレッドごとのIntel MSR周波数スケーリング

負荷と構成のさまざまな条件で多くの試行と測定を行いましたが、結果は同じです。 CPUFreqでいくつか試行した後(アプリケーションが実行されていない状態で、各コアに異なる周波数を設定し、最終的にはcpufreq-info -wで測定した周波数が等しかった)、CPUコアがの場合は実際に独立した周波数、またはハードウェアポリシーまたは制約がある場合。

最後に、この細かい周波数スケーリングを実行可能にするCPUモデルはありますか?

私が使用しているCPUが750

+2

CPUコアは異なる電圧で動作することができないため、異なる周波数/電圧の組み合わせを設定することができません。 –

+0

一般に、インテルの各世代では、コア間の分離が増え、これらをより細かく制御することができます。 – ugoren

答えて

4

アクティブコアの個々のコア周波数を制御することはできません。ただし、すべてのアクティブコアの周波数を同じに制御できます。その理由はこれまでの回答にあります。すべてのコアは同じアクティブ電圧面にあります。 次世代のHaswellプロセッサでは、各コアを別々に制御することができればうれしいことです。

2

cpufreqを-情報はコアがそのP-状態で同期する必要がありますかについての情報を表示するインテルCore i5のである:

[[email protected] ~]# cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 
Report errors and bugs to [email protected], please. 
analyzing CPU 0: 
    driver: acpi-cpufreq 
    CPUs which run at the same hardware frequency: 0 1 <---- THIS 
    CPUs which need to have their frequency coordinated by software: 0 <--- and THIS 
    maximum transition latency: 10.0 us. 

は、少なくとものためそれは、レジスタを直接設定するのではなくcpufreqインターフェイスを使って、珍しい要求を持つ非Intel CPU上で実行できるようにすることをお勧めします。

予期しない切り替えを避けるために、カーネルスレッドを特定のコアに固執させる方法もチェックしてください。

+0

お返事ありがとうございました!今私は全体像を得た。 – user1466329

+0

誰かがHaswellでこれを試したことがありますか?私はそのようなアーキテクチャを備えたマシンを持っていないので、今はそれができるかどうか疑問に思っていました。もしそうなら、私は再試行します。第二に、私はスケジューラレベルで働いているので、私はcpufreqを通過できるとは思わない。私が取り組んでいるプロジェクトの全体像を明らかにするために、それはついにゴール・アウェア・アンド・ステータス・アウェア・リソース・スケジューリングを得ることを目指しています。したがって、私は他の人に決定を委ねることができません。 – user1466329

+0

しかし、コアアフィニティを設定するという考えは、か​​なり意味があります。とにかく、私はまた、周波数設定の時間細分性を理解する必要があります。 – user1466329

3

私はあなたが写真の大きな部分を欠いていると思います!

電源およびクロックドメインを読み上げてください。ドメイン内のすべてのプロセッサコアは、同じP状態(すなわち、同じ周波数および電圧)で動作する。すべてのコアがそのドメインで実行されるP状態は、常にそのドメイン内の最高のP状態を要求するコアのP状態になります。 MSRはこれをまったく反映しておらず、カーネルが公開しているインターフェースもそうではありません。

アナンドテックは、この上の良い記事を持っています。 http://www.anandtech.com/show/2658/2

「これは、すべてのAMDの天才と非常に似ていますが、どこ2が異なることは、彼らが電源管理を処理する方法であるAMDは、個々のコアを要求することを可能にしますがNehalemは同じ周波数ですべてのコアを実行しようとします; 1つのコアがアイドル状態の場合、単にパワーゲートされ、コアは効果的にオフになります。

私はSB/IBまでパワーメーターを接続していませんが、私の推測では動作は同じです。

0

私は皆様の貢献に感謝したいと思います! さらに調査すると、私はコミュニティと共有する他の詳細を発見しました。

提案したように、Nehalemはすべてのコアを単一のクロックドメインに配置しているため、すべてのコアの中で設定されている最大周波数がすべてのコアに適用されます。いくつかのツールはアイドル中のコアで異なる周波数を表示することがありますが、周波数を最大にするアプリケーションを実行するだけで十分です。 これは、私のテストから、コアとLLCスライスがすべて同じ周波数/電圧領域にあるSandy Bridgeにも当てはまります。 Ivy Bridgeでもこの動作が起こると仮定しています。これは 'tick'反復のみであるためです。 代わりに、HaswellはコアとLLCのスライスを異なる単数のドメインに配置し、コアごとの頻度を可能にします。 http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4