はぴの自作カフェ 2nd

子育てと仕事に勤しみながら自作PCを模索する漢の日常

Ryzen Threadripperのメモリアクセスは「Channel - Local - NUMAモード」が吉!?

2017-09-19 17:40:24 | AMD TR4関連

こんにちは、はぴです。
台風が過ぎたあとはめっきり秋めいてきた模様です。
日差しは強いですが涼しげな秋の虫たちの音色が心地よいです。

ま、いろいろ過ごしております。
前回の更新よりだいぶ過ぎてしまいましたがAMDの久々のハイエンドRyzen Threadripperを弄っております

AMD FXシリーズからの引っ越しも楽しみなハイエンドです。





Ryzen Threadripperの大きな特徴ですが、コア数が16個と多いのはもちろんのこと
PCI-ExpressがGen. 3.0世代になったことと、そのレーン数が半端ない数であることが目玉ではないでしょうか?


CPUからは合計64レーンものPCI-Expressが出ており、M.2スロットにはx4レーンを3基分。
拡張スロットにはGen. 3.0世代で16,16,8,8の合計48レーンを用意しております。





基本的なこととして「ThreadripperのメモリアクセスモードはNUMAモードにすべし!(記事作成時点)」
SSDをRAID構成にしたり高速な性能を目的としたいのであればNUMAモードが速度が出ます!
・・・まぁAMD環境なのでINTEL環境よりは速度は低いのであしからず;;

メモリモードについては4gamerさんの記事にも書いてありましてややこしい限りではあるんですが

NUMAモードはRyzen ThreadripperのCPUの中で2ソケットのCPUがあるよう扱うモードです。
これはメモリアクセス遅延の低減を図るモード
Ryzen ThreadripperのCPUの中にRyzen 1700Xが2個デュアルソケットで動いているようなものですね。

Ryzen 1700Xのデュアルソケットモードのようなもの?
それぞれに2チャンネルのメモリアクセスを行うようなもの。






これに対しUMAモードは、Ryzen ThreadripperのCPUそのものとして動作させるモードということになります。
しかし。CPUの中身はコアが2個あるのでその間でのInfinity Fabricを介したアクセス遅延が発生すると。

この図での説明では、1コアに4チャンネルのメモリアクセスが設定されていて、もう1つのコアはInfinity Fabricを介しての動作となるようですね。

少々ややこしいことにはなりますが、上記のNUMAモードの方がわかりやすいような気がします。







例えば、使用しているASUS ZENITH EXTREMEでのメモリモードの設定は
BIOSにて、「Advanced」-「AMD CBS」-「DF Common Option」-「Memory interleaving」という項目をいじります。

Die : UMAモード
Channnel : NUMAモード



システムを組み上げた時点では「Auto」で試運転していました。
快適な動作に満足していたのですが、SSDの性能を計測していた時に「?」な感触に・・・

1.OS用には、マザーボードのチップセット付近にあるM.2スロットに搭載したMZVKW512HMJPを使用。こちらはPCI-Express Gen. 3x4の帯域。
2.LIQID社製NVMe「LIQID Element SSD」 PCI-Express Gen. 3x8
3.SSD7101AでSSDを4基使用したRAID 0構成 PCI-Express Gen. 3x16


CrystalDiskMark 5.2.2
MZVKW512HMJP(PCI-Express Gen. 3.0 x4)                                                 LIQID Element SSD (PCI-Express Gen. 3.0 x8)                          SSD7101A(PCI-Express Gen. 3.0 x16)




なんか思ったよりも速度が低いなぁというのが感想でした。
AMDのハイエンドシステムとしては初のGen. 3.0のPCI-ExpressなのでINTELシステムよりも遅いのは当然としてもです。
LIQID Element SSDとSSD7101Aとの速度差は帯域幅が倍違うにも関わらずあまり変わらない結果に(PCI-Express x8とPCI-Express x16)


M.2接続のMZVKW512HMJPはSocket AM4での性能と比べても同じ?かやや遅め?でもAMDはこんなもんかな?な感想。

そしてATTO Disk Benchmarkを走らせて愕然とします。
「Read速度が出てない!」WriteよりもRead遅すぎっ!!!!!

PCI-Express Gen. 3.0を16レーンも使用するSSD7101AがReadが3GB/s程度で頭打ちになってしまいました。
しかもReadよりもWriteが早いという何かが悪さをしているような結果に。


ATTO Disk Benchmark
MZVKW512HMJP(PCI-Express Gen. 3.0 x4)                                                 LIQID Element SSD (PCI-Express Gen. 3.0 x8)                          SSD7101A(PCI-Express Gen. 3.0 x16)





いくらINTEL製品よりも速度の出ないAMD製品とはいえRead性能がWrite性能よりも上回るはずです。
まだまだ環境が熟成されていないのか!?とも思いましたが、ここで気が付いたのが冒頭に申し上げた2種類のメモリモード。
BIOSで「Auto」にせず明示して設定することにしました。

ASUS ZENITH EXTREMEでのメモリモードの設定
「Advanced」-「AMD CBS」-「DF Common Option」-「Memory interleaving」
1.None
2.Channel : NUMA
3.Die : UMA
4.Socket
5.Auto
5つの選択肢がありますがNUMAモードの「Channel」とUMAモードの「Die」設定をそれぞれ選択。



このThreadripperのメモリアクセスモードを変更したときのストレージの性能差を調べてみました。
左側がUMAモード(Die) 右側がNUMAモード(Channel)となります。


M.2スロットに接続しているMZVKW512HMJPですとUMAモードNUMAモードであまり変わりはないようですね。

CrystalDiskMark 5.2.2
MZVKW512HMJP(UMA - Die)                 MZVKW512HMJP(NUMA - Channel)




ATTO Disk BenchmarkですとUMA - Dieモードの方がWrite性能は良いですが、Read性能はNUMA - Channelモードの方が良好。


ATTO Disk Benchmark
MZVKW512HMJP PCI-Express Gen. 3.0x4(UMA - Die)                 MZVKW512HMJP PCI-Express Gen. 3.0x4(NUMA - Channel)



 


CrystalDiskMark 5.2.2
LIQID Element SSD PCI-Express Gen. 3.0x8(UMA - Die)              LIQID Element SSD PCI-Express Gen. 3.0x8(NUMA - Channel)





ATTO Disk Benchmark
LIQID Element SSD PCI-Express Gen. 3.0x8(UMA - Die)              LIQID Element SSD PCI-Express Gen. 3.0x8(NUMA - Channel)





PCI-Express Gen. 3.0世代で8レーンの帯域幅を持つLIQID Element SSDになるとNUMA - Channelの設定時のストレージ性能が明確に良くなってきます。
UMA - DieモードではRead性能が3GB/s付近で頭打ちになるようです。



CrystalDiskMark 5.2.2
SSD7101A PCI-Express Gen. 3.0x16(UMA - Die)              SSD7101A PCI-Express Gen. 3.0x16(NUMA - Channel)





ATTO Disk Benchmark
SSD7101A PCI-Express Gen. 3.0x16(UMA - Die)              SSD7101A PCI-Express Gen. 3.0x16(NUMA - Channel)



 

PCI-Express Gen. 3.0世代、16レーンもの帯域幅を持つSSD7101AではNUMA - Channelの設定時のストレージ性能で7GB/sを超えるRead,Write性能を発揮@w@
INTELマザーではRead性能が10GB/sを超えたりするようですが、AMD環境ではPCI-Expressのチューニングがまだまだのようです。

UMA - DieモードでRead性能が3GB/s付近で頭打ちになるのはLIQID Element SSDでのそれと同じ傾向。
とはいうものの帯域幅が倍も違うLIQID Element SSDとSSD7101Aでの性能がともに7GB/s程度で変わらないのもAMD環境ならではの傾向でしょうか?


Ryzen Threadripperシステムでは、メモリアクセスモードがUMA - DieモードとNUMA - Channelモードの2種類あります。
それぞれに使い方によって有利になると思われますが、通常はNUMA - Channelに設定した方がストレージ性能は良さそうです。
また、ASUS ZENITH EXTREMEではBIOSでAutoモードにするとUMA - Dieモードに設定されるようです。
Autoモードにせず、UMA - DieモードおよびNUMA - Channelモードに設定した方がよさげです。
また、今後のBIOSアップデートやドライバの更新でストレージの性能が帯域幅に比例して出るように改良されていくことに期待したいと思います。

Ryzen ThreadripperのCPUそのものの動作としてはUMAモードの方が良さそうな気もしますが、内部構造が2個のCPUダイになっていることを考えるとNUMAモードの方が良さそう?な気もします。
ストレージの性能が現時点で大きく変わることを考えると今後の熟成が楽しみです。




にほんブログ村