第9章 NUMA
以前から、AMD64 および Intel 64 システムのすべてのメモリーは、すべての CPU から等しくアクセスできました。Uniform Memory Access (UMA) と呼ばれるアクセス時間は、どの CPU が操作を実行しても同じです。
この動作は、最新の AMD64 および Intel 64 プロセッサーには当てはまりません。Non-Uniform Memory Access (NUMA) では、システムメモリーは NUMAノード 間で分割されます。NUMA ノードは、システムメモリーのローカルサブセットと同じアクセスレイテンシーを持つソケットまたは特定の CPU セットに対応します。
この章では、仮想化環境でのメモリー割り当てと NUMA チューニング設定について説明します。
9.1. NUMA メモリーの割り当てポリシー
次のポリシーは、システム内のノードからメモリーがどのように割り当てられるかを定義します。
Strict
- Strict ポリシーとは、ターゲットノードにメモリーを割り当てることができない場合に割り当てが失敗することを意味します。メモリーモード属性を定義せずに NUMA ノードセットリストを指定すると、デフォルトで
strict
モードになります。 Interleave
- メモリーページは、ノードセットで指定されたノード間で割り当てられますが、ラウンドロビン方式で割り当てられます。
Preferred
- メモリーは、単一の優先メモリーノードから割り当てられます。十分なメモリーが利用できない場合は、他のノードからメモリーを割り当てることができます。
目的のポリシーを有効にするには、ドメイン XML ファイルの
<memory mode>
要素の値として設定します。
<numatune> <memory mode='preferred' nodeset='0'> </numatune>
重要
strict
モードでメモリーがオーバーコミットされ、ゲストに十分なスワップスペースがない場合、カーネルは一部のゲストプロセスを強制終了して、追加のメモリーを取得します。Red Hat は、この状況を防ぐために、preferred
割り当てを使用し、単一のノードセット (たとえば nodeset = '0') を指定することをお勧めします。