【にゅーま】

NUMA とは?

💡 近い棚のメモリは速い、遠い棚は遅い、距離が性能を左右する仕組み
📌 このページのポイント
NUMAアーキテクチャ NUMAノード 0 CPU 0 メモリ 0 ← ローカルアクセス 低レイテンシ(速い) CPU 0 → メモリ 0 は高速 NUMAノード 1 CPU 1 メモリ 1 ← ローカルアクセス 低レイテンシ(速い) CPU 1 → メモリ 1 は高速 インターコネクト CPU 0 → メモリ 1(リモートアクセス)は遅い(1.5〜3倍の遅延)
NUMAアーキテクチャのイメージ
ひよこ ひよこ

NUMAってどういうときに関係してくるの?

ペンギン先生 ペンギン先生

CPUが2つ以上あるサーバーで重要になるよ。CPU1が自分のメモリにアクセスするのは速いけど、CPU2のメモリにアクセスするときはインターコネクトを経由するから遅くなるんだ

ひよこ ひよこ

どのくらい速度差があるの?

ペンギン先生 ペンギン先生

ローカルメモリとリモートメモリのアクセス遅延は1.5〜3倍くらい差が出ることがあるよ。大規模なデータベースや科学計算では、この差がシステム全体の性能に大きく影響するんだ

ひよこ ひよこ

NUMAを意識するって、具体的にどうするの?

ペンギン先生 ペンギン先生

プロセススレッドを特定のCPU(NUMAノード)に固定して、そのCPUのローカルメモリを使うようにするんだよ。Linuxだとnumactlコマンドで制御できるし、データベースソフトもNUMA最適化の設定があるよ

ひよこ ひよこ

最近のCPUでもNUMAって関係あるの?

ペンギン先生 ペンギン先生

むしろ重要度が増してるよ。AMDのEPYCはCCD(チップレット)ごとにNUMAノードが分かれることがあるし、IntelHBM搭載Xeonでは近いメモリと遠いメモリの階層がさらに複雑になってるんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NUMA」って出てきたら「CPUごとに近いメモリ・遠いメモリがあるアーキテクチャ」と思えればだいたいOK!
📖 おまけ:英語の意味
「NUMA (Non-Uniform Memory Access)」 = 不均一メモリアクセス
💬 Non-Uniform(不均一な)+ Memory Access(メモリアクセス)で、メモリアクセス速度が均一ではないという意味だよ
← 用語集にもどる