Blog

※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。 / # The contents expressed here are only my personal opinions.

NUMAアーキテクチャとネットワーク性能(1)-説明編

NUMA(Non-Uniform Memory Access)とは

Non-uniform memory access - Wikipedia, the free encyclopedia

NUMA - Wikipedia

NUMA(Non-Uniform Memory Access、ヌマ)とは、共有メモリ型マルチプロセッサコンピュータシステムのアーキテクチャのひとつで、複数プロセッサが共有するメインメモリへのアクセスコストが、メモリ領域とプロセッサに依存して均一でないアーキテクチャである。

複数CPUがある場合、近いメモリと遠いメモリが構成上存在し、データが置かれる場所によって、性能に差が出てしまうアーキテクチャである。

 

 ネットワーク性能を測定する場合も、NUMA構成上不利な状態で性能測定をしてしまうと、思うような性能が出ない場合があるため、注意が必要である。本稿では、NUMA及びCPU構成の概要とネットワーク性能についてを述べる。

 

Intelサーバーの場合、Nehalem世代からNUMAが導入された。

参考:

Nehalem世代のアーキテクチャ | データセンター完全ガイド

 

ASCII.jp:インテルCPUの大きな転換点に立つNehalem (2/3)

CPUにメモリーコントローラーが内蔵されるということは、複数のCPUを搭載するシステムでは、それぞれのCPUごとにメモリーが搭載されることになる。つまり、メモリーアーキテクチャーがNUMA(ヌーマ、Non Uniform Memory Access)になる。なお、米AMD社のOpteronもNUMAアーキテクチャーを採用している。

NUMAに関する細かな説明は省くが、CPUごとにメインメモリーが分かれるため、OSはそれぞれのCPUに属するメモリーを参照する必要が出てくる。

 Intel Nehalem世代サーバー(2009年頃~):

  • CPUにメモリコントローラを内蔵
  • I/Oはサウスブリッジ経由

f:id:kz_tomo:20140525221349j:plain

従来、CPUからメモリへアクセスする場合は、CPUが接続されているノースブリッジと呼ばれるチップセットを経由していたため、CPUから直接メモリアクセスできるようになった点が大きなアップデートであった。

 

Intel SandyBridge世代からは、I/OコントローラもCPUに内蔵された。

参考:

 2011年 Intelサーバー向けプロセッサのロードマップ | データセンター完全ガイド

 

Intel SandyBridge世代以降のサーバー(2012年頃~):

  • CPUにメモリコントローラとI/Oコントローラを内蔵

f:id:kz_tomo:20140525221500p:plain

 要するにI/Oパスに関わるコンポーネントは全部CPUに統合された。

 

ネットワーク性能に関する考察

さて、本題のネットワーク性能についてだが、ネットワーク通信では送信側サーバは、メモリからNIC、受信側サーバは、NICからメモリへデータが流れることになる。

※実際には、データ転送処理でCPUコピーが発生する場合には、CPUレジスタへのロードが必要となるため、メモリ/CPU間のデータ転送が発生する。DMA転送で処理される場合にはデータはCPUを経由しない(RDMA含む)。

 

上述の通り、現在のサーバアーキテクチャでは、NICが接続されるPCI ExpressバスはCPUから直接出ており、メモリもCPU直結であるため、理想的にはネットワーク通信に関わるNICとメモリは同じCPUで完結すべきである。

 

DellのNUMAに関するホワイトペーパー(PDF)

NUMA Best Practices for Dell PowerEdge 12th Generation Servers - Dell TechCenter - TechCenter - Dell Community

上記Dellホワイトペーパーでは、NUMAノードの近いメモリと遠いメモリでどの程度の性能差が発生するかについて、測定例が示されている。

 

f:id:kz_tomo:20140525230041j:plain

 NUMAノードの近いメモリに対して、遠いメモリは半分のバンド幅しか性能が出ていない。

 

f:id:kz_tomo:20140525230320j:plain

 レイテンシー(処理完了時間)についても、遠いメモリは近いメモリより約60%も時間が掛かってしまう。

 

以上、NUMA構成とネットワーク性能についての関連事項と性能傾向について説明した。次回は、実際にLinux環境でネットワーク性能を測定し、NUMA構成の与える影響と設定方法について紹介する。

NUMAアーキテクチャとネットワーク性能(2)-実践編 - Interconnect Your Future - InfiniBand and RoCE