これは非常に適切で適切な質問です。ご存知のように、ハイパースレッド コアは実際の CPU/コアではありません。代わりに、これは仮想 CPU/コア (以降、コアと呼びます) です。Windows XP の Windows CPU スケジューラは、ハイパースレッディング (仮想) コアと実際のコアを区別できるはずです。この完璧な世界では、それは「ちょうどいい」ものであり、問題ではないと想像するかもしれません。あなたは間違っているでしょう。
Windows 2008 BizTalk サーバーを最適化するための Microsoft 独自の推奨事項では、HyperThreading を無効にすることを推奨しています。これは、ハイパースレッド コアの処理が完全ではなく、スレッドがハイパースレッド コアでタイム スライスを取得し、ペナルティ (実際のコアのパフォーマンスの一部、10% I' d が推測し、Microsoft は 20 ~ 30% を推測します)。
サーバーの効率を向上させるためにハイパースレッディングを無効にすることを提案している Microsoft の記事参照: http://msdn.microsoft.com/en-us/library/cc615012(BTS.10).aspx
これは、BIOS の更新後の 2 番目の推奨事項であり、彼らがそれをどれほど重要視しているかです。彼らが言うには:
マイクロソフトから:
" BizTalk Server および SQL Server コンピューターでハイパースレッディングを無効にする
BizTalk Server コンピューターでは、ハイパースレッディングを無効にすることが重要です。これは BIOS 設定であり、通常は BIOS セットアップのプロセッサ設定にあります。ハイパースレッディングにより、サーバーは実際よりも多くのプロセッサ/プロセッサ コアを搭載しているように見えます。ただし、ハイパースレッド プロセッサは通常、物理プロセッサ/プロセッサ コアのパフォーマンスの 20 ~ 30% を提供します。BizTalk Server がプロセッサの数をカウントして、自己調整アルゴリズムを調整するとき。ハイパースレッド プロセッサにより、これらの調整が歪められ、全体的なパフォーマンスに悪影響を及ぼします。"
現在、彼らはそれが自己調整アルゴリズムを放棄したためだと言っていますが、競合の問題についても言及しています(少なくとも私にとっては、より大きなスケジューリングの問題であることを示唆しています). 好きなように読んでください。ハイパースレッディングは、単一の CPU システムを使用していたときは優れたアイデアでしたが、現在では、このマルチコアの世界でパフォーマンスを損なう可能性がある複雑な問題に過ぎません。
ハイパースレッディングを完全に無効にする代わりに、Process Lasso (無料) などのプログラムを使用して、重要なプロセスのデフォルトの CPU アフィニティを設定し、それらのスレッドが仮想 CPU に割り当てられないようにすることができます。
Windows CPU スケジューラが仮想 CPU をどれだけうまく処理できるかを本当に知っている人はいないと思いますが、XP の処理が最悪であると言っても過言ではなく、それ以来徐々に改善されてきましたが、まだ完璧ではありません。実際、OS はこれらの低速の仮想コアに配置するのに最適なスレッドを認識していないため、完璧ではない可能性があります。それが問題である可能性があり、Microsoft がサーバー環境でハイパースレッディングを無効にすることを推奨している理由です。
また、HyperThreading がなくても、「コア スラッシング」の問題があることに注意してください。単一のコアでスレッドを維持できる場合、コア変更のペナルティが軽減されるため、それは良いことです。