Dell PowerEdge R930はXeon E7 v3/v4を搭載した4Socketサーバです。R930は大容量メモリやメニーコアプログラムを実行するHPCユーザに利用されるケースが増えており、特に最適なメモリ構成についてご相談頂くことが多いため、今回はR930でメモリ搭載する際の最適な構成についてお話したいと思います。

 

尚、ここで記載しております内容は、Xeon E7 v3プロセッサを4つ搭載し、DRAMはすべて同一のタイプ(同容量・同RANK数・同周波数)を前提とした一般論として記載しております。新規に構成を検討される際はぜひ弊社営業担当までご相談ください。また、今回用いたSTREAM(メモリ転送速度の測定ツール)ではTriadという数式を用いた結果をSTREAMのスコアとして用いております。また、本記載はMemoryの動作モードとして、メモリ帯域を重視したOptimizer Modeでの実行を前提としています。

 

1.4Socketを搭載したR930のMemory帯域

 

はじめにメモリの帯域に影響を与えるコンポーネントについてご紹介致します。R930搭載のCPUは、プロセッサソケット毎に2つのMemory Controllerを有しています。また、この2つのMemory Controllerは、それぞれ2つのVoltage Mode Single-Ended (VMSE)を用いたSMI2インターフェースがあります。したがって、各プロセッサソケットは4つのSMI2インターフェースを持つことになります。

Fig.1

 

R930には4つのプロセッサが搭載されていることから合計で16本のSMI2インターフェースが存在することになります。

 

Fig.2

 

R930はプロセッサソケットからの16本のSMI2インターフェースに対してC114 Scalable Memory Buffer (SMB)を接続しています。このSMBはSMI2インターフェースと2つのDDR4 Channelを持ち、Memory Controllerからの要求に対して、SMI2インターフェース(VMSE)と2つのDDR4 Channelの間のコミュニケーションを取り持ちます。

2つのDDR4 Channelはそれぞれが3つのDIMMと最大8論理RANKをサポートしています(すなわち1つのSMBにて6つのDIMM Slotを収納)。

Fig.3

 

SMBとMemory Controllerの間のSMB2インターフェースは、SMBのサポートするDDR4の2倍の動作周波数で動作することが可能です。このため、帯域を重視するためのモードである「Optimizer Mode」の場合、理論的には2つのDDR4 Channelに対して同時にIOを発行することが可能であることと同等の性能が期待できるということになります。

このことは、R930において最も理論上性能が出る可能性があるケースは「見かけ上の動作がすべてのDDR4 Channelに同時にIOが発生する場合である」ということになります。

既にご紹介申しましたように、各プロセッサソケットは2つのMemory Controllerを持ち、各Memory Controllerの2つのSMI2インターフェースはSMBに接続され、各SMBが2つのDDR4 Channelをサポートするため、R930では32本のDDR4 Channelが存在していることになります。

 

DDR4 Channelの数=4Socket*2MemCTL*2SMI2*2Channel = 32本

 

したがって、R930にて最も帯域的に有利となるのは、32本のDDR4 Channelにおいて同時にIOが発生する事が可能となる構成であると言うことになります。

これが可能であるシナリオは、すべてのChannelに均等に同一種類のDIMMを挿入した場合です。下図はその例となります。

Fig.4

 

上記の図では、32枚のDIMMを各Channelに1枚ずつ挿入したケースです。これは100%の性能を引き出すDIMM装着例となります。

この構成は32枚のDIMMに、見かけ上同時にIOが走る可能性があり、そのシナリオが生じた場合に帯域が最大となります。同様の理由から、32本のChannelの整数倍となる64枚のDIMMを用いた下記のような構成においても、STREAMの結果はFig.4の構成とほぼ同等の性能が得ることが可能です。

 

Fig.5

 

したがって、R930にてMemory帯域の最大化を目的とする場合、システムに存在する32本のすべてのChannelについて、Channelあたりの枚数であるDPC(DIMMs Populated / Channel)を同一に維持しながら配置する構成とすることが最も重要であるということになります。

Fig.4は1DPC、Fig.5は2DPCの例となります。最大帯域を維持しつつ将来のMemoryの増設の可能性を考える場合、Fig.4のように32枚の構成から開始し、増設時にはFig.5のように32の整数倍の枚数となるようなプランを立てていただく必要があります。

 

2.メモリの性能が出ないケース

 

メモリの性能が出ないケースとして、32本のDDR4 Channelがすべて利用されていない場合や、DPCが同一でない構成を行った場合が考えられます。
弊社にて前述の前提を覆した実験として、Fig.6のような36枚のDIMMを用いた構成によるSTREAMのスコアの観測を行いました。本構成のポイントは、32本のDDR4 Chanelを満たしているものの、Channelあたりの枚数が均等でない、すなわちDPCが同一でない部分が存在することです。

Fig.6

 

上記の構成にてSTREAMのスコアを計測したところ、Fig.4およびFig.5の構成に比較しておおよそ15%のスコアに留まりました。上記構成は、DPCが同一でない構成である場合に、STREAMのスコアが著しく悪化する典型的な構成例です。

STREAMの著しいスコアの悪化は、DPCが一定でないためにChannel間の構成が非対称となる部分が生じることが原因です。Xeon E7 v3 プロセッサのMemory Controllerは、Memory Controller間およびその先のSMB間にて構成が対称である場合、連続した物理アドレスのマッピングをChannel間に分散します。これは連続した物理メモリアドレスが複数のDDR4 Channel上のDIMMに跨ってマッピングされることを意味しています。したがって、任意のメモリアクセス要求が、複数Channelに対して同時にIOを発行する動作となる可能性を著しく高めます。

しかしながら、Fig.6のようにChannel間の構成が対称でない場合、Memory Controllerは連続したアドレスについて、規則性を伴ってChannel間に分散してMappingすることができなくなります。したがって、任意のメモリアクセスは複数Channel間にて同時にIOを発生させるシナリオが期待できなくなり、STREAMのスコアは著しく悪化します。

この例は、32枚のDIMMをFig.4のような構成にて動作させていたR930に対して、たまたま余った4枚のDIMMを追加で装着した場合と同じようなことと言えます。この場合、システム全体のCapacityは稼げますが、Memory帯域には大きな悪影響が生じる事を意味しています。

この性能低下は、DIMMの数が32の整数倍でない場合の共通の問題です。DIMMの数が16枚である場合も同様です。

Fig.7は16枚のDIMMを用いた構成例です。本構成は、Fig.4の構成に比較して60%程度の性能となりました。

Fig.7

 

Fig.4と比較すると、理論上同時に利用可能なChannelの数が減るため、得ることの可能な理論最大帯域が低下します。

性能低下の要因を維持したまま、Capacityを増やしても帯域は変化しません。たとえば、Fig.8はFig.7の帯域が低下した要因の構成を維持しつつ、Channel当たりのDIMMの数を2つに増やした例です。この場合も、Fig.7の場合と同様に、全DDR4 Channelの半分は依然として利用されていません。したがって、STREAMの結果はFig.7の場合と同等の60%程度となります。

Fig.8

 

Fig.9は同様に16枚のDIMMの装着例です。本構成は50%の性能となります。本構成につきましても、Fig.4と比較しますと、理論上の同時に利用可能なChannelの数が減るため、得ることの可能な最大帯域も低下します。

Fig.9

 

Fig.10はFig.9の構成を維持しつつ、Channelあたり2つのDIMMにしたものです。したがって、Fig.10のSTREAMのスコアもFig.9と同じ50%程度となります。

 

Fig.10

 

Fig.7・Fig.8とFig.9・Fig.10の構成の違いは、Memory Controllerからみた対称性です。Fig.9・Fig.10の構成では、Memory Controller0内では対称性が維持されていますが、Memory Controller 1は全く利用されていません。

Fig.7・Fig.8の構成では、Memory Controller0とMemory Controller 1が分散して利用されており、またこの間で構成は対称性が維持されています。

 

Fig.11は24本のDIMMの構成例です。STREAMのスコアが33%程度となります。

Fig.11

 

本構成は32本のすべてのChannelが埋められていないことに加えて、DPCが一定でなく、Channel間のDIMMの数の非対称が生じます。したがって、STREAMの性能は悪化します。

 

このように、4Socketを利用するR930にてMemoryの帯域を重視する場合、32の整数倍のDIMMを、DPCを一定に維持しながらChannel毎に均等に配置することが重要となります。また、Channel毎に非対称な構成となる場合、性能に与える影響は利用されるプログラムの実装に依存します。たとえば、STREAMのスコアで比較した場合、Fig.7の構成はFig.6の構成を大きく上回りますが、Fig.6の構成がFig.7の構成よりも高い性能を示すアプリケーションの存在は、理論上発生し得ます。

したがって、Memoryの容量をCapacityから判断した場合に24枚で満たせる場合でも、帯域を重視する場合は32枚の構成とする事を常に意識する必要があります。

 

3.まとめ

 

R930におけるメモリ搭載の注意事項を以下にまとめます。

 

①各CPU SocketのDDR Channelはすべて埋める構成にする。したがって、2Socket構成であれば16枚、4Socket構成であれば32枚のDIMMが必要。

②各DDR4 Channelの枚数は同一にする(DPCを一定に保つ)。したがって、4Socket構成の場合、DIMMの枚数は32の整数倍であることが必要。

③DIMMは同一種類でそろえる(容量・RANK・動作周波数)。Fig.5の構成のように16GBと32GBを混在させることは可能。

  ただし、横方向は同一のスペックで統一し、Channel間の対称性が維持されている必要がある。また、RDIMMとLRDIMMの混在はできない。

④各CPU Socket間のメモリの構成は対称にする。

 

以上、今後の案件にお役に立てると幸いです。

 

<謝辞>

今回本調査に多大なるご支援を頂いた弊社テクニカルサポートチームのメンバへお礼申し上げます。

 

デルの製品またはソリューションに関するお問い合せは
こちらからご連絡ください。