查看原文
其他

AMD EPYC2服务器片上NUMA设置&应用建议

唐僧 huangliang 企业存储技术
2024-12-09

目录

-       Xeon Scalable内存控制器及均衡配置

-       AMDChiplet“小芯片”设计特点

-       EPYC2 NPSNUMA)设置与应用建议

-       内存通道(CCD分布)越多,性能一定更好?

 

早在2年半之前的《多级NUMAAMD EPYC互连速率、位宽与功耗的关系》一文中,我就简单讨论过AMD服务器CPU的片上(on SocketNUMA设计;到了第二代EPYC有些变化,我又在《单节点230虚拟桌面、6 GPU卡:AMDEPYC vSAN超融合测试&参考架构》中围绕VDI应用继续谈到了这个话题。今天我想再深入展开一些。

 

Xeon Scalable内存控制器及均衡配置


首先拿服务器市场的CPU“霸主”做个参照。大家都知道Inetl Xeon SP一代和二代处理器都是集成6通道内存控制器,它们又被分成2组控制器(各3通道)的内存子系统,如上图。

 

关于内存配置是否均衡,结构决定性质:


-       每颗Xeon Scalable安装内存为66的倍数(6通道),是带宽最理想的均衡(Balanced配置;

-       CPU 1-3DIMM内存(1-3通道),属于近均衡(Near Balanced配置,我觉得数量太少时也是没有更好的办法,这时应优先把一侧的内存控制器通道用满;

-       CPU 48DIMM内存(4通道),也属于近均衡(NearBalanced)配置,这时就要在两侧的内存控制器对称安装了;

-       CPU 5791011DIMM内存属于非均衡(Unbalanced配置,应尽量避免。

 

Intel Xeon CPU内存带宽与DIMM条数之间的对照大家可能看到过,下面我列出AMD EPYC2的情况,您会发现相似的地方。

 

图片点开后可缩放,以下同


由于用在PowerEdge R6525服务器上的AMD EPYC 7742是顶配的64核,所以在每CPU配置88的倍数条内存时,双路带宽最高达到330 GB/s以上;

 

余下的配置中,4通道和双数内存插法(排除816)都属于Near-Balanced。比如Unbalanced配置中的71115条内存,其带宽就分别低于61014DIMM;但也有“意外”的情况——上图表中每CPU 913条内存时带宽就测到了32x GB/s,只能说Stream-Triad测试方法可能有局限(使用的内存容量不够多)。

 

AMDChiplet“小芯片”设计特点

 

关于Chiplet这个话题,Winnie Shao博士有2篇行业和生态角度的精彩文章,下面列出供大家参考。


Die封装:Chiplet小芯片的研究报告

AMD二次崛起之路


这个图我也不是第一次给大家出示了。AMD EPYC2凭借将8个小的CCDCore Die)和I/O Die分开的设计,再加上CCD使用7nm先进工艺,在核心数量上做到了64,超出Intel Xeon

 

同时代价也是有的,那就是和第一代EPYC服务器CPU类似的片上NUMA(非一致性内存访问),尽管内存控制器都在中间那颗大的I/O Die上。

 

如上图,ROMEEPYC2)的8个内存通道分别属于4个内存控制器,每2CCD Die能够就近优化访问其中的一组,而跨越“四象限”的内存访问就不是最佳性能(延时/带宽)了。

 

上图出自一位发烧友兄弟之手,我不保证其中每一处细节都完全准确,不过这个用来辅助说明EPYC2的片上NUMA设计还是比较形象的。

 

EPYC2 NPSNUMA)设定与应用建议


我截了一段关于NPS设置的定义:


-       NPS 0——双CPU系统设置为1NUMA节点(相当于Intel Xeon系统关闭NUMA),所有内存通道使用interleave交错访问模式;

-       NPS 1——每个CPU插槽1NUMA节点(相当于Intel Xeon系统打开NUMA),连接到同一插槽的所有内存通道使用交错访问;

-       NPS 2——每个CPU插槽2NUMA节点,划分为24内存通道的interleave集;

-       NPS 4——每插槽4NUMA节点,在“四象限”各自的2通道内存间交错访问,相当于CPU to内存的亲和优化到每个内存控制器;

 

之前我曾介绍过,像VDI这样的应用推荐NPS设为4,是因为物理服务器的计算和内存资源都是细分给每个虚拟机,然后虚拟机利用vNUMA优化访问就近的内存控制器即可。但不是所有应用都这么理想,下面我先引用Dell白皮书《Balanced Memory with 2nd Generation AMD EPYC Processors for PowerEdge Servers》中的一个表格:

 

起初看到这份资料时我有点疑惑——内存数量不是4的倍数时NPS(即NUMA节点数)也推荐设为4?不过细想一下,最右边一列应该都算非Balanced内存配置,不能做到4个内存控制器的DIMM配置完全对等。我看到过有的朋友建议,在AMDEPYC2服务器上应尽量少用达不到Balanced的插法——也就是说最好按照每颗CPU 481216条内存来配

 

而在内存达到48的倍数时,为什么反而要建议NPS设为1或者0呢?我觉得这里是为了保守起见。毕竟许多传统应用没有NUMA优化、或者习惯于针对Intel Xeon每插槽一个NUMA节点来优化,这时AMD的片上NUMA如果打开有可能带来负面结果

 

同时,大家也别忘了不是每一款AMD EPYC2 CPU都支持NPS 4,下表供参考:

 

总的原则是,如果EPYC28CCD都激活,那么一般就会支持到NPS 4;而如果只有8-16个核心并且都位于四象限的1-2组内存控制器附近,那么就可能不支持NPS 24

 

特别一点的是,像7552这样48核没有在四象限完全对称分布,所以也只支持到NPS2;而72628个核心反而均等处于四个象限,所以支持NPS4

 

这个来自Dell文档NUMA Configuration settings on AMD EPYC 2nd Generation》的图表,是我认为本文中最有价值的。其中总结了4大类型的应用工作负载:

 

通用工作负载建议NPS=1。其中SPEC CPU测试和I/O密集型应用是这方面的代表;SPEC的另外2BenchMarkjbb2015power ssj2008则适合NPS设为4/2

 

虚拟化类应用可以设为NPS 1/4。除了我以前介绍过的VDI,容器类应用也属于资源隔离比较好的,所以NPS建议也是4;但像VMmark 3这样测试虚机资源开销不等的复杂环境,NPS还是建议为1

 

数据库和分析类应用NPS1/4。这里HammerDB对应的是OLTP交易型数据库,NPS建议设为1,其实按照Oracle用户的习惯,Intel CPU插槽间的NUMA通常也要关掉,否则一旦内存利用不均衡触发swap对性能影响较严重。Hadoop应该属于适合水平扩展的分析型应用,建议NPS设置4

 

高性能计算和电信类应用建议NPS 2/4HPCEDA(电子设计自动化)可以把NPS设为4,基于OpenStackNFV(网络功能虚拟化)又分细出一项实时Kernel的,都建议设置NPS 2

 

下面我引用AMD文档《RDBMS Tuning Guide for AMD EPYC 7002 Series Processors》侧面验证下上述观点:

 

对于通用(常规的)Oracle数据库,建议BIOS中每插槽的NUMA节点设为1,也就是NPS 1

 

对于微软SQL Server 2019,如果是OLTP也是建议NPS 1DW数据挖掘(分析型)应用则可以根据情况来选择是否设置为2或者4,下面这段英文供参考。

 

 

内存通道(CCD)越多,性能一定更好?

 

前面我整理那个表格里,可以看到有些核心数相同的EPYC2 CPU,在CCD上分布的情况不同,导致支持的NPS设置也不同。

 

上图引用自Dell文档《The Value of Using Four-Channel Optimized AMD EPYC CPUs in PowerEdge Servers》,左边CPU核心所在的CCD临近2组内存控制器,所以为4通道优化型;而右边CPU核心的CCD则分布于4组内存控制器附近,就是8通道优化型。那么在同样插4条内存的情况下,哪个性能更好?

 

上图用同为16核的EPYC 72827302进行对比(都配置4通道内存),CPU核心分布在更多CCD Die上的7302在主频、功耗和内存带宽指标上全面领先,但一些应用中性能反而落后。像Web Server、基于WebJava应用以及内容创建(视频编辑、图像处理),此处就推荐使用AMD72827252一类4通道优化型的CPU

 

这应该就是核心相对集中的好处,72828Core之间的内存数据能够享受就近访问的待遇;而7302的内存访问路径在I/O Die上就相对复杂了。

 

受篇幅和时间所限,更多技术细节暂未展开讨论,希望对大家有参考价值:)


参考内容

https://downloads.dell.com/manuals/common/dellemc-balanced-memory-2ndgen-amd-epyc-poweredge.pdf

https://downloads.dell.com/manuals/common/dell-emc-dfd-numa-amd-epyc-2ndgen.pdf

https://developer.amd.com/wp-content/resources/56949_1.0.pdf

https://downloads.dell.com/manuals/common/dell-emc-dfd-advantage-four-channel-memory-poweredge-amd-epyc.pdf


扩展阅读:企业存储技术》文章分类索引(微信公众号专辑)



:本文只代表作者个人观点,与任何组织机构无关,如有错误和不足之处欢迎在留言中批评指正。进一步交流技术,。如果您想在这个公众号上分享自己的技术干货,也欢迎联系我:)


尊重知识,转载时请保留全文,并包括本行及如下二维码。感谢您的阅读和支持!《企业存储技术》微信公众号:HL_Storage

长按二维码可直接识别关注


历史文章汇总:http://chuansong.me/account/huangliang_storage

http://www.toutiao.com/c/user/5821930387/



点击下方“阅读原文”,查看更多历史文章

↓↓↓

修改于
继续滑动看下一个
企业存储技术
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存