第7章 NUMA
従来の x86 システムでは、 メモリーはすべて均等に全 CPU からアクセスできるようになっていました。 どの CPU が動作を実行するかに関わらず、 UMA (Uniform Memory Access) と呼ばれるアクセスタイムは同じになります。
最近の x86 プロセッサでは、 この動作が異なってきています。 NUMA (Non-Uniform Memory Access) では、 システムのメモリーが複数のゾーンに区分けされ (ノード と呼ばれる)、 特定の CPU やソケットに割り当てられます。 CPU に対してローカルとなるメモリーへのアクセスが、 そのシステムのリモート CPU に接続しているメモリーに比べて速くなります。
7.1. メモリー割り当てのポリシー
システム内のノードからどのようにメモリーを割り当てるのかは 3 つのポリシーで定義されます。
Strict
- 目的のノードにメモリーを割り当てられない場合、 他のノードにフォールバックするのが割り当てのデフォルト動作になります。 Strict ポリシーでは、 目的のノードにメモリーを割り当てられない場合は割り当てに失敗することになります。
Interleave
- メモリーページはノードマスクで指定された複数のノード全体に割り当てられますが、 割り当てはラウンドロビン方式で行なわれます。
Preferred
- 単一の優先メモリーノードからのみメモリーの割り当てが行なわれます。 十分なメモリーが使用できない場合には、 他のノードからメモリーを割り当てることができます。
XML 設定で目的のポリシーを有効にします。
<numatune> <memory mode='preferred' nodeset='0'> </numatune>