VMware ESXi上のインテルCluster-On-Die(COD)テクノロジー
Summary: インテル クラスター オン ダイ、COD、VMware ESXi、プロセッサー ソケットあたり複数のNUMAノード、
Symptoms
概要
NUMA対応システムでは、メモリー チャネルはプロセッサー全体に分散されます。キャッシュ データの一貫性を維持するために、メモリー関連のすべての操作にスヌープ操作が必要です。スヌーピングは、ローカル プロセッサーとリモート プロセッサーの両方でキャッシュの内容を調査し、要求されたデータのコピーがいずれかのキャッシュに存在するかどうかを確認するために使用されます。 NUMAが無効になっている場合(BIOSでノード インターリーブが有効になっている場合)、スヌープ モードは自動的に無効になります。
インテルHaswellマイクロアーキテクチャで使用できるスヌープ モードには、3つのタイプがあります。Dell第13世代サーバー(13G)は、次の3つのスヌープ モードをすべてサポートしています。
1)アーリースヌープ
2)ホームスヌープ
3)クラスター オン ダイ
このブログでは、VMware ESXiの観点からCluster-On-Die(COD)スヌープモードについて説明します。このブログでは、次の側面について説明します。
- CODの基本
- ハードウェアとVMware ESXiの両方の観点からCODを有効にするための前提条件
- ESXiにはいくつかのコマンド ライン オプションがあり、CODを有効にした場合と無効にした場合のNUMAリストの違いを示します。
CODの詳細に入る前に、Intel Haswellプロセッサー マイクロアーキテクチャのコア数に基づいてプロセッサーのタイプを理解する必要があります。
インテルは、Haswellプロセッサー アーキテクチャーを次のタイプに分類しています。
1)LCC - 少ないコア数[4-8コア]
2)MCC-ミディアムコアカウント[10 – 12コア]
3)HCC-高コア数[14-18コア]
メモ: このコア数のタイプは、インテルのマイクロアーキテクチャによって異なります。
COD(Cluster-On-Die)モードとは何ですか?
CODは、10コア以上のインテルHaswellプロセッサー ファミリーから導入された新しいスヌープ モードです。MCCおよびHCCプロセッサーのカテゴリーでは、LCCプロセッサーにはメモリー コントローラーが1つしかないのに対し、インテルはシングル プロセッサー ソケットに2つのメモリー コントローラーを組み込んでいます。プロセッサー ソケットの各メモリー コントローラーは、1つのホーム エージェント(HA)として機能します。
COD対応サーバーでは、各プロセッサーがソケットを論理的に2つのNUMAノードに分割します。各NUMAノードには、物理コアの合計数の半分と、1つのホーム エージェントを持つ最終レベル キャッシュ(LLC)の半分があります。クラスターという用語は、プロセッサー コアとして形成され、対応するメモリー コントローラーはグループ化され、ソケット ダイ上のクラスターとして形成されます。各ホーム エージェントは2つのメモリー チャネルを使用し、より少ない数のプロセッサー論理コアからの要求を認識するため、メモリー帯域幅の拡大と低レイテンシーが実現します。この動作モードは、主にNUMAワークロードを最適化するために使用されます。オペレーティング システムは、ACPI SRATテーブルを読み取ってNUMAノードの数を表示します。
CODのグラフィカルな表現は次のとおりです。

2番目の画像では、CODが有効になっている場合、シングル プロセッサー ソケット ダイが2つの論理ノードに分割されていることがわかります。
前提条件:
このセクションでは、ハードウェアとVMware ESXiの両方の観点から前提条件について説明します。
ハードウェア:
- CODは、10コア以上のインテルHaswell-EPプロセッサーでのみ有効にできます。
- メモリは、代替メモリチャネル(CH0、CH2、CH1、CH3)に装着する必要があります。たとえば、R730、R730xd、R630、T630サーバーには、ソケットごとに4つのメモリー チャネルがあります。

上記の前提条件をよりよく理解するために、例を見てみましょう。チャネルあたり2枚のメモリー モジュールのみを装着したサーバーの場合、特定のチャネルに対して次のスロットを装着する必要があります
- A1 & A3
4つのメモリモジュールで、
- A1、A3 & B1、B3
8つのメモリモジュールで、
- A1、A3、B1、B3 & A2、A4、B2、B4
メモ: CODを有効にするには、少なくとも2枚のメモリー モジュールを装着する必要があります。
- BIOS設定でCluster On Dieトークンを有効にする必要があります。
- CODのVMwareサポートは、当初はvSphere 6.0から始まり、現在はESXi 5.5 U3bでもサポートされています。詳細については、VMware KB 2142499を参照してください。
VMware ESXiは、ACPI SRAT(システム リソース親和性テーブル)とSLIT(システム ローカリティー情報テーブル)を読み取り、使用可能なハードウェア リソースを特定してマッピングします。これには、NUMAノードのマッピングも含まれます。このセクションでは、VMware ESXiからCODの状態を確認するためにユーザーが使用できるいくつかのコマンド ライン オプションについて説明します。
- esxtop には、入力された NUMA ノードを表示するオプションがあります。esxtopコマンドを入力したら、「m」を押すと、次のようにNUMAノードの詳細が表示されます。
次のスクリーンショットは、2個のプロセッサー ソケットと128GBのシステム メモリーを搭載したシステムから取得したものです。CODが有効になっていないデフォルトの構成では、esxtopはNUMAノードごとに64GBが割り当てられた2つのNUMAノードを表示します。次の図は、CODを無効にしたVMware ESXiでのesxtopコマンド出力を示しています。 
CODが有効の場合、シングル プロセッサー ソケット ダイが2つに分割されるため、esxtopは2つではなく4つのNUMAノードを一覧表示します。
esxcliには、ハードウェアから公開されているNUMAノードの数を表示するコマンド ライン オプションがほとんどありません。
メリット
CODモードでは、オペレーティング システムはソケットあたり2つのNUMAノードを認識します。CODのローカルレイテンシーは最高です。各ホーム エージェントは、より大きなメモリー帯域幅を提供する可能性のある少数のスレッドからの要求を認識します。CODモードでは、メモリー内ディレクトリー ビットがサポートされています。このモードは、高度に最適化されたNUMAワークロードに最適です。さまざまなスヌーピング モードの詳細については、Dell HPCチームが公開したブログを参照してください。
リファレンス
Cause
-
Resolution
-
