web-dev-qa-db-ja.com

ハイパースレッディングされたIntelXeonプロセッサでキャッシュはどのように機能しますか

C1.xlargeインスタンスを使用して、EC2のリサーチデータベースでいくつかの実験を実行しています。私の知る限り、c1.xlargeは8つのハイパースレッド仮想CPUを使用しています。 Amazonはまた、このインスタンスは「IntelXeonファミリー」の物理プロセッサを使用していると述べています。

この場合も、システムには8つのCPU、4つのワーカー、および4つのその他(ロックマネージャー、コミュニケーター、2つのシーケンサー)があります。したがって、1対1のスレッドとCPUの対応があります。実行中の実験はチェックポイントです。チェックポイントを取るための9番目のスレッドを作成し、スループットへの影響を評価しています。この9番目のスレッドが4つのワーカーまたはロックマネージャーの1つを含むCPUの1つに割り当てられると、結果は予測可能です-スループットが低下します。ただし、この9番目のスレッドを残りのCPUのいずれかに配置すると、これらのスレッドはシステムのボトルネックではなく、ワーカースレッドに影響を与えないため、影響は見られないと予想されます。ただし、スループットが低下しているので、説明を探しています。

非ワーカースレッドで生成されたチェックポイントスレッドが何らかの理由でワーカースレッドのキャッシュを無効にしている場合は、問題があるのではないかと疑うようになりました。この特定のEC2インスタンスまたはIntelXeonプロセッサでキャッシングがどのように機能するかをよく理解していないため、このキャッシングがどのように機能するか、特にハイパースレッドシステムでどのように機能するかについての説明を探しています。ハイパースレッドプロセッサ上の両方のCPUはキャッシュを共有しますか?スレッドはプロセッサ間でキャッシュを共有しますか?

Intel Xeonプロセッサ3000および5000シリーズは、「2つのコア間でデータを共有してメモリトラフィックを削減できるスマートな第2レベルのキャッシュ」を使用しているというIntelのマニュアルを見つけることができました。これはインスタンスが使用している可能性があるものですか?もしそうなら、それは8つのvCPUの共有キャッシュすべてを意味しますか?

1
user2713719

サーバーOSとEC2を搭載したハードウェアの間に仮想化レイヤーがあるため、vCPUの8つのスレッドすべてが同じ物理CPUで実行されているという保証すらありません。ゲストの内部からキャッシュヒットやパターンなどを測定しようとするのは、無駄な作業です。実際のハードウェアを可視化することはできません。

VCPUは物理CPUコアを表しておらず、8つのvCPUは8つの論理コアを持つ単一の物理CPUを表していません。確かに、ほとんどのハイパーバイザーのCPUスケジューラーは、同じゲストからのスレッドをスケジュールして、マルチプロセスシステムの同じコアで実行しようとしますが、保証はありません。

4
MDMarra