NUMA:コア、メモリ、そしてそれらの距離
本記事では、NUMA(Non-Uniform Memory Access)アーキテクチャの基礎を解説する。CPUコアとメモリの物理的な距離がパフォーマンスに与える影響や、NUMAノードの概念、メモリアクセスのレイテンシ差について詳しく説明する。
背景メモ
- CPUのパフォーマンス向上はかつてクロック周波数の引き上げで達成されていたが、発熱や電力の壁に直面し、2000年代半ば以降はコア数を増やす方向にシフトした(マルチコア化)。
- コアが増えると、全コアが単一のメモリコントローラにアクセスする構成(SMP=対称型マルチプロセッシング)ではメモリアクセスがボトルネックになる。そこで登場したのがNUMA(Non-Uniform Memory Access)アーキテクチャ。
- NUMAでは、CPUソケットごとに近接するメモリ(ローカルメモリ)を持たせ、自ソケットのメモリへのアクセスは高速だが、他ソケットのメモリ(リモートメモリ)へのアクセスは遅くなる。この「距離」を意識したスケジューリングやメモリ配置が性能の鍵を握る。
- 本稿は、NUMAの基本概念(ノード、ローカル/リモートアクセス、NUMAドメイン)を、Linuxでの具体例(numactlなどのコマンド)やメモリレイテンシの実測値を交えて解説するシリーズの第1回。