Intel Corporation は、Pentium IV と Xeon のプロセッサ ラインのパフォーマンスを向 上させるハイパースレッディング テクノロジーを開発しました。 このテクノロジーに より、単一のプロセッサ コアが 2 つの独立したスレッドを同時に実行できます。 この 機能は、本当のデュアルプロセッサ システムのパフォーマンスを提供するものでは ありませんが、オンチップ リソースの使用率を改善することができ、特定の重要な ワークロードのタイプについてスループットを向上させます。
ハイパースレッディング テクノロジーの詳細については、Intel の Web サイトを参照 してください。
追加情報については、ヴイエムウェアの Web サイトにあるホワイトペーパー
『Hyper-Threading Support in ESX Server 2』を参照してください。
ハイパースレッディング テクノロジーを使用すると、単一の物理プロセッサ コアを 2 つの論理プロセッサのように機能させることができます。 プロセッサは、同時に 2 つの異なるアプリケーションを実行できます。 論理プロセッサと物理プロセッサの混 同を避けるために、Intel は物理プロセッサをソケットと呼ぶことが多く、この章の 説明でもその用語を使用します。
Intel Core 2 Duo 2 1 2 Intel Core 2 Quad 4 1 4
AMD Athlon64 1 1 1
AMD Athlon64 X2 2 1 2
AMD Opteron 1 1 1
AMD Opteron Dual Core
2 1 2
表 9-1 プロセッサとコアの属性 (続き)
プロセッサ コア スレッド / コア 論理プロセッサ
ハイパースレッディングはシステムのパフォーマンスを 2 倍にするわけではありま せんが、アイドル リソースを有効に活用することによってパフォーマンスを向上で きます。 ビジーなコアの 1 つの論理プロセッサ上で実行中のアプリケーションは、非 ハイパースレッディング プロセッサ上で単独で実行される場合に取得するスルー プットの半分より少し多いスループットを期待できます。 ただし、ハイパースレッ ディングのパフォーマンス向上はアプリケーションに強く依存し、アプリケーション によっては、ハイパースレッディングを使用するとパフォーマンスが低下する場合が あります。これは、両方の論理プロセッサ間で多くのプロセッサ リソース(キャッ シュなど)が共有されるためです。
ハイパースレッディングの有効化
デフォルトでは、ハイパースレッディングは有効です。 無効な場合は有効にすること ができます。
すべての Intel Xeon MP プロセッサと、512K L2 キャッシュを持つすべての Intel Xeon DP プロセッサは、ハイパースレッディングをサポートします。ただし、すべての Intel Xeon システムがハイパースレッディングに対応した BIOS を備えているわけで はありません。 BIOS にハイパースレッディングのサポートが含まれているかどうかを 確認するには、システムのドキュメントを参照してください。 ESX Server には 32 個の CPU という論理的な制限があるので、物理 CPU が 17 個以上あるシステムでは、
VMware ESX Server はハイパースレッディングを有効にすることはできません。
ハイパースレッディングを有効にするには
1 システムがハイパースレッディング テクノロジーをサポートしていることを確 認します。
2 システムの BIOS でハイパースレッディングを有効にします。
メーカーによって、このオプションは [ 論理プロセッサ(Logical Processor)] と 呼ばれることもあれば、[ ハイパースレッディングの有効化(Enable
Hyperthreading)] と呼ばれることもあります。
3 ESX Server ホストのハイパースレッディングがオンになっているかどうかを確認 します。
a VI Client でホストを選択し、[ 構成(Configuration)] タブをクリックします。
b [ プロセッサ(Processors)] を選択し、[ プロパティ(Properties)] をク リックします。
c ダイアログ ボックスで、ハイパースレッディングの状態を確認して、ハイ パースレッディングをオフまたはオン(デフォルト)にすることができます。
ハイパースレッディングと ESX Server
ハイパースレッディングを有効にした ESX Server システムは、標準のシステムとほと んど同様に動作するはずです。 CPU 0 と 1 はともに第 1 のコア上にあり、CPU 2 と 3 は第 2 のコア上にあるといったように、同じコア上の論理プロセッサは、隣接する CPU 番号を持ちます。
VMware ESX Server システムは、プロセッサ時間をインテリジェントに管理して、シ ステム内のプロセッサ コア間で負荷が円滑に分散されるようにします。 仮想マシン は、同じコアの 2 つの論理プロセッサ上よりも、2 つの異なるコア上に優先的にスケ ジュールされます。
論理プロセッサの作業がない場合、論理プロセッサは停止状態に入れられ、論理プロ セッサの実行リソースが解放されて、同じコア上のほかの論理プロセッサ上で実行中 の仮想マシンが、コアの実行リソース全体を使用できます。 VMware スケジューラは、
コアのリソース全体を使用して実行中の仮想マシンが、半分のコア上で実行されてい る仮想マシンよりも多くチャージされるように、この停止時間を適切に捕捉します。
このプロセッサ管理方法により、標準の ESX Server リソース割り当てルールにサーバ が違反しないようにします。
ハイパースレッディング用の高度なサーバ構成
ハイパースレッディング システム上の物理コアを仮想マシンの仮想 CPU がどのよう に共有できるかを指定することができます。 2 つの仮想 CPU がコアの論理 CPU 上で 同時に実行されている場合、それらの仮想 CPU はコアを共有します。 これは、個々 の仮想マシンについて設定できます。
仮想マシンにハイパースレッディングの共有オプションを設定するには
1 VI Client のインベントリ パネルで、仮想マシンを右クリックして、[ 設定の編集
(Edit Settings)] を選択します。
2 [ リソース(Resources)] タブをクリックして、[CPU の詳細(Advanced CPU)]
をクリックします。
3 [ モード(Mode)] ドロップダウン メニューから選択することによって、この仮 想マシンのハイパースレッディングを指定します。
次のオプションを選択できます。
これらのオプションは、公平性または CPU 時間の割り当てには影響しません。 仮想 マシンのハイパースレッディング設定にかかわらず、CPU シェアに比例する CPU 時 間を受け取り、CPU 予約と CPU 制限の値によって制約されます。
オプション 説明 任意
(Any)
ハイパースレッド システムのすべての仮想マシンに対するデフォルトです。 こ の設定の仮想マシンの仮想 CPU は、この仮想マシンまたはほかの仮想マシン の仮想 CPU と、いつでも自由にコアを共有できます。
なし
(None)
仮想マシンの仮想 CPU は、互いに、またはほかの仮想マシンの仮想 CPU とコ アを共有できません。 つまり、そのコア上のほかの論理 CPU を停止状態に置 いて、この仮想マシンからの各仮想 CPU が、常にコア全体を取得しなければ なりません。
内部
(Internal)
このオプションは [ なし(None)] に似ています。 この仮想マシンからの仮想 CPU は、ほかの仮想マシンからの仮想 CPU とコアを共有することはできませ ん。 同じ仮想マシンの別の仮想 CPU とは、コアを共有できます。
このオプションは、SMP 仮想マシンについてのみ許可されます。 単一プロセッ サ仮想マシンに適用された場合、システムのオプションを [ なし(none)] に 変更します。
通常のワークロードの場合、カスタム ハイパースレッディング設定は不要なはずで す。 これらのオプションは、ハイパースレッディングと不適切に対話する異常なワー クロードの場合に役に立ちます。 たとえば、キャッシュ スラッシングの問題があるア プリケーションは、物理コアを共有するアプリケーションの速度を低下させる場合が あります。 アプリケーションを実行中の仮想マシンを [ なし(None)] または [ 内部
(Internal)] のハイパースレッディング状態にして、ほかの仮想マシンから隔離でき ます。
別の仮想 CPU とのコアの共有を許さないハイパースレッディング制約が仮想 CPU に ある場合、システムは、ほかの仮想 CPU がプロセッサ時間を消費する資格を与えら れた場合にそれをスケジュール解除します。 ハイパースレッディング制約なしの場合 は、両方の仮想 CPU を同じコア上でスケジュールできます。
(仮想マシンあたりの)コア数が限定されているシステムでは、問題がさらに悪化し ます。 そのような場合、スケジュール解除される仮想マシンを移行できるコアがない 場合があります。 結果的に、ハイパースレッディングが [ なし(none)] または [ 内 部(internal)] に設定された仮想マシンのパフォーマンスが、特にコア数の限られた システム上で、低下する可能性があります。
隔離
まれな特定の状況において、アプリケーションがハイパースレッディング テクノロ ジーと不適切に対話していることを ESX Server システムが検出することがあります。
たとえば、特定のタイプの自己修正コードが Pentium IV トレース キャッシュの正常 な動作を妨げて、問題のあるコードとコアを共有しているアプリケーションの速度を 大きく(最大 90 パーセント)低下させることがあります。 このような場合、ESX Server ホストは、このコードを実行している仮想 CPU を隔離して、仮想マシンを適 宜、[ なし(None)] モードまたは [ 内部(Internal)] モードにします。 隔離は、まれ に必要になるだけであり、ユーザーに対しては透過です。
隔離を無効にするには、ホストの Cpu.MachineClearThreshold 詳細設定を 0 に設定し ます。 「詳細ホスト属性の設定 (P.154)」を参照してください。
ハイパースレッディングと CPU アフィニティ
ハイパースレッディングを使用するシステムでは、CPU アフィニティを設定する前 に状況を検討してください。 たとえば、高優先順位の仮想マシンが CPU 0 にバインド されていて、別の高優先順位の仮想マシンが CPU 1 にバインドされている場合、こ の 2 つの仮想マシンは同じ物理コアを共有しなければなりません。 この場合、これら