web-dev-qa-db-ja.com

WindowsのOpteron6272でのCPUスロットリング

2x Opteron6272と64GBのRAMを搭載した新しいHPProliantサーバーでマルチスレッドアプリケーションのベンチマークを試みています。

デスクトップマシン(さまざまなi7およびXeon X5675プロセッサ)でアプリケーションを実行すると、アプリケーションによってすべてのコアの使用率がほぼ100%になります。

サーバーでアプリケーションを実行すると、実行するスレッドの数に関係なく、アプリケーションの合計CPU使用率は約20〜25%になります。つまり、32スレッドで実行している場合、32コアすべてが約20%でハングし、16スレッドを実行している場合、約40%でハングします。

  1. 最初はこれがオペレーティングシステムに関係しているのではないかと思ったので、デスクトップとサーバーのOSが同じになるようにサーバーにWindows7をインストールしました。
  2. 次に、それがハードウェアであると疑ったので、BIOSの電源管理をHighPerformanceに変更しました。これによりベンチマーク時間が増加しましたが、同じ20%の使用率の問題が解決しません。
  3. Y-cruncherベンチマークを使用すると、32コアすべてを100%で取得できます。私のカスタムベンチマークは.NETで書かれていますが、これはおそらくそれと関係がありますか?

私はこの問題に当惑しています。誰がこれを引き起こす可能性があるのか​​考えていますか?

2
vpiTriumph

アプリが大量のデータを処理している場合は、データのパスをたどってみてください。入力データがネットワークから供給されている場合は、遅延、帯域幅の制限、または送信エラーの可能性を確認してください。ディスクI/Oをすでに確認しましたが、そうでなければボトルネックの可能性があります。

最後になりましたが、これは高度にマルチスレッド化された.NETアプリケーションであるため、 サーバーガベージコレクション が使用されていることを確認する必要があります。そうしないと、説明されているように奇妙な負荷特性が表示される可能性があります この投稿ではスタックオーバーフロー から。

4
the-wabbit