まず、基本が正しいことを確認しましょう。
私が理解しているように、NUMAシステムはNUMAの(非対称)ネットワークですノードここで、NUMAノードは通常(常にではありませんが)物理CPUパッケージです。 NUMAシステムでは、各ノードに独自のローカルメモリがあり、他のノードのメモリはバスを介して利用できます。ネットワークの不均一性は、外部メモリを取得すると、メモリフェッチに関与する2つのノードの場所に応じてさまざまなコストが発生することを意味します。
さて、私がそれを正しく理解したと仮定して、これが実際のLinuxシステムからの出力です。
カーネルサポートNUMA(少なくともサポートがコンパイルされています):
$ grep NUMA /boot/config-`uname -r`
CONFIG_Arch_SUPPORTS_NUMA_BALANCING=y
CONFIG_Arch_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_Arch_USES_NUMA_PROT_NONE=y
# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NUMA_EMU=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_ACPI_NUMA=y
ただし、NUMAノードは1つだけです。
$ numactl -H
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 15955 MB
node 0 free: 5203 MB
node distances:
node 0
0: 10
また、ノード0からノード0までのNUMAバスのパスは1つだけであることに注意してください(興味深いことに、距離は0ではなく10です)。これは、すべてのメモリアクセスが少なくともNUMAレイテンシに関して同じコストを負担することを意味します。
つまり、NUMAノードは1つしかないので、これはNUMA機能のない通常のSMPマシンですよね?私はそう思う。
ありがとう。
最新のx86CPUアーキテクチャ(AMDOpteron以降およびIntelNehalemベースのXeon以降)はNUMA対応ですが、必ずしもNUMAで動作する必要はありません。モード。
特定のケースでは、NUMA対応のCPUが単一ノードとして機能しているため、NUMAの動作なしが検出されます。