在上一篇文章(多核全能,引领风尚:基于AMD二代EPYC的戴尔易安信二路服务器首测中)介绍了Dell EMC针对第二代EPYC处理器的特点,为PowerEdge系列服务器设计了全新的主板,以更好地发挥整体性能。在本篇文章中,我们将实地测试PowerEdge系列服务器中的重要一员——R7525服务器的性能。
相比于采用EYPC处理器的其他PowerEdge服务器,R7525担纲了更重要的角色。R7525服务器的标准2U机箱双路处理器设计,并延续了PowerEdge服务器的一贯特点,单一服务器内支持第二代EPYC全系列处理器,哪怕是高达280W TDP的顶配型号。而其他服务器要么局限于空间(与散热相关),要么局限于市场定位,仅靠风冷很难做到这一点。
E企研究院实验室中的这台R7525服务器配备了两颗EPYC(Rome) 7302处理器和256GB DDR4内存。EPYC(中文名霄龙)7302处理器具有16核心32线程,基准频率3.0GHz,最高频率可达3.3GHz,并具有128MB容量的L3缓存。与上一代EPYC处理器中具有相同市场定位的7301相比,具有相同的核心与TDP,但是L3 Cache容量达到2倍,主频也有大幅提升。
图注:相比于上一代7301处理器,7302在相同甚至更低运行功耗的情况下,其主频更高,从上一代的2.2GHz(最高2.7GHz)提升到了3.0GHz(最高3.3GHz),L3缓存也增大了一倍,达到了128MB;同样支持八通道内存,但内存带宽却提高了约三分之一,从7301的153GB/s提升到7302的204GB/s,这都意味着能提供更高的计算能力
在EPYC 7002系列处理器中,也有一款16核心32线程的处理器——7282处理器,但定位于成本优化型市场,尽管最高可达3.2GHz,但却只有64MB容量的L3缓存;虽然也支持3200MHz DDR4内存,但内存通道的数量仅有四个,内存带宽更低至85GB/s,大约是7302处理器内存带宽的四成。
与众不同:可调节的核心数量
相比于传统x86处理器的单片式设计,EPYC家族从第一代的MCM(多芯片设计)走到现在的Chiplet(小芯片)设计,在CPU的模块化设计上积累了丰富的经验。从R7525中的BIOS中也能明显感受得到,比其他服务器的BIOS有更多的可选项:
图注:R7525服务器中“处理器”相关的BIOS选项,最上面名为“Logical Processor”的选项实际就是我们常说的“超线程”(Hyper-Threading,HT)技术,即一个物理核心提供两个线程;图下的红框和绿框分别为7302处理器的NUMA选项和CCD与核心数量选项
在NUMA选项中,R7525服务器BIOS提供“0/1/2/4”四个选项,关于这一点的原因,我们在后面的测试中解释。另外一个有关NUMA的选项是“L3 Cache as NUMA Domain”,默认为关闭(Disabled)状态,可以选择启用。我们知道在EPYC处理器中,每个CCD实际上是由两个CCX组成,每个CCX都有一块L3缓存,供CCX内的核心共享使用。
如果选择Disabled,意味着EPYC中所有CCX的L3缓存组成一个共享的缓存池,所有核心都可以完全访问;如果Enabled,意味着需要操作系统调度层理解L3缓存的具体位置分布(局部性),尽量让不同CCX中的核心“就地访问”L3缓存,在理论上可以降低访问延迟。可以看作是“NUMA”技术在更微观层面的应用。关于这个选项的作用,我们依旧在后面的测试中解答。
上面BIOS图中绿框中的两个选项分别对应EPYC处理器Chiplet设计中的CCD与核心数量。在上图中,尽管在CCD只有三个选项,但可以看出7302处理器具有4个CCD,这意味着每个CCD内有4个核心每个CCX有2个核心——都是顶配的一半,所以核心总数为顶配的四分之一(7302共16核心),。而下一个选项则可选择CCD中的核心数量,是启用全部核心(2个)还是只启用一半数量(每CCX出1个,即“1+1”)的核心。
通过选择启用CCD及其核心数量,以及“Logical Processor”线性,R7525实际上可以“变身”为拥有不同核心数量的服务器。E企研究院结合CCD及核心数量,让R7525分别具有不同的核心数量,并测试其计算性能:使用GeekBench工具简单验证7302的性能,如下图所示:
图注:不同核心/线程组合下的EPYC 7302处理器的整数与浮点性能。上图中两条平行于横轴的蓝色线与橙色线是不同核心/线程下,单个核心的整数与浮点性能,基本没有变化,保持稳定。灰色线与黄色线则为不同核心/线程下的多核整数与浮点性能,随着核心/线程数量的增加,整数与浮点性能几乎成线性增加,中间具有相似性能的两个组合实际上具有相同的核心与线程数,支持CCD与核心数量选择不同
图注:不同NUMA设置,与L3 Cache as NUMA Domain启用或关闭情况下,R7525的整点与浮点性能。从测试来看,关闭NUMA(即NUMA设置为0)会导致计算性能略微下降;但打开NUMA后,不管NUMA如何设置(如1/2/4),对计算性能的影响并不明显。同时,L3 Cache as NUMA Domain的开启与关闭,对单核性能有略微影响,但并不影响综合性能
不同NUMA性能揭示EPYC内存奥妙
EPYC在内存方面的显著的特点是率先支持八通道内存,理论上可以提供更高的带宽,但实际性能部分取决于其NUMA(Non-Uniform Memory Access,非一致内存访问)特性。
在第一代EPYC处理器中,每CCD自己提供2个内存通道,导致跨CCD的内存访问延迟显著增加,如果在双路服务器,跨CPU的内存访问延迟将更加明显,这就是NUMA的影响。但在第二代EPYC处理器中,AMD将各CCD中将内存控制器与PCIe等I/O控制分离出来,形成单独的芯片——IOD。所有核心都通过IOD来访问内存和PCIe等外围设备。
图注:上图中显示了从第一代EPYC(Zen架构)到第二代EPYC(Zen 2架构)的变化。将各个CCD中的IO控制分离出来形成一个整体的IOD(I/O Die),看起来,任意CCD中的任意核心访问任意内存都理应具有相同的延迟,也就是说,Chiplet架构能够改善EPYC的内存访问延迟
第一代EPYC处理器的内存访问带宽大多在170GB/s左右,第二代EPYC处理器普遍采用3200 MHz的DDR 4内存,再加上Zen 2架构,其内存总带宽提升到204GB/s左右,但也有少数低端处理器只提供一半的内存通道,如7282。
E企研究院针对R7525服务器中的BIOS选项,即NUMA和L3 Cache as NUMA Domain选项的不同选择,形成多种组合,来分别验证R7525服务器中的内存总带宽与内存访问延迟。
图注:不同NUMA选择(0/1/2/4 NUMA,即R7525分别具有0/2/4/8个NUMA),并加上L3 Cache as NUMA Domain的启用和关闭状态下,R7525的内存总带宽(测试工具:PerformanceTest 10)
从上图来看,不同NUMA设置下,R7525的内存总带宽还是有明显差异的。比如在NUMA设置为4(即R7525中有8个NUMA)的情况下,内存总带宽最高,接近了190GB/s,与AMD公布的204GB/s相差不大。而在NUMA为0的情况下,内存带宽几乎降低了一半。同时从上图也可看出,在内存带宽的测试中,L3 Cache as NUMA Domain的启用或关闭,对测试结果并没有明显的影响。
接下来是关于内存延迟方面的测试,设置不同的NUMA选项,这意味着核心在访问内存时有两种选择:
1访问本地内存,例如NUMA内核心只访问所在NUMA的内存
2访问远程内存,例如8 NUMA设置下,NUMA 1内的核心访问其他NUMA中的内存
同时,不同NUMA设置下,E企研究院再加上L3 Cache as NUMA Domain的启用或关闭,来评估这一选项对内存延迟的影响。
上图显示了在L3 Cache as NUMA Domain启用或关闭情况与不同NUMA设置下,核心访问本地内存的延迟情况。从测试结果来看,如同内存带宽的情况一样,在NUMA设置为4(即8 NUMA)情况下,访问本地内存的延迟最低;同时,L3 Cache as NUMA Domain在关闭状态下,更利于访问本地内存的延迟。
需要注意的是,这里的“本地内存”是相对NUMA设置而言,例如当NUMA设置为0时,在任意核心看来,所有的内存都是本地内存,哪怕是跨CPU访问内存。所以从上图可以看到,当NUMA设置为0时,内存的访问延迟显著高于其他NUMA设置。
而在远程访问方面,我们得到了一些不同的结果,如下图所示:
图注:上图显示了在L3 Cache as NUMA Domain启用或关闭情况与不同NUMA设置下,核心访问本地内存的延迟情况。首先从测试结果来看,L3 Cache as NUMA Domain的启用或关闭,对于内存的远程访问没有影响。当NUMA设置为0时,内存远程访问的平均延迟最低,明显低于其他NUMA设置。而其他NUMA设置下,内存远程访问的平均延迟并没有明显差异
从测试结果来看,EPYC处理器中的多个内存控制器仍存在一定局部性,即NUMA依然存在。因为不管是在内存总带宽还是内存延迟方面,当NUMA设置为4时,其性能总是优于其他NUMA设置。从AMD的一些公开资料,我们找到了答案。
图注:在IEEE 2020大会上,AMD的演讲揭示了其不同内存延迟的奥秘。在第二代EPYC处理器中,依旧具有4个内存控制器,每2个CCD共享一个内存控制器,而且4个内存控制器采用环形连接,对角线上的两个内存控制器并没有直接连接,这就是为什么NUMA设置为4的情况下,其本地内存访问延迟低于NUMA为2或1时的延迟
关键应用场景 R7525优化到位
在了解了EPYC处理器的特点之后,E企研究院就可以基于R7525服务器设计一系列的应用场景测试。从我们的这款R7525的特点来看,其核多(双路32核64线程)主频高(基频3.0GHz,最高可达3.3GHz),内存多(双路16通道,32个内存插槽,配置16条16GB内存,每通道一条),容量大(共256GB),并且PCIe通道多(可支持24片NVMe SSD,且无收敛),其能支撑很多应用场景,但权衡选择之后,我们认为以数据库为代表的关键应用场景更适合评估R7525的性能特点,因此我们构建了一个单实例的Oracle数据库场景,设置不同NUMA选项,以及分别启用或关闭L3 Cache as NUMA Domain选项来评估R7525服务器在Oracle数据库下的性能。
E企研究院设计了一个类似电子商务网站的场景来模拟贴近真实的用户场景,这一网站应用主要由“新用户注册、更新用户详细信息、浏览商品、提交订单、处理订单、浏览订单(包括取消订单)”等六大常见用户行为组成,传递到数据库层面(DML),即产生包括“select(查询)、insert(插入)、update(更新)、commit(提交)、rollback(回滚)”等数据库最常见的操作,这也是OLTP数据库最核心的功能。
六大用户行为按一定比例混合,就会形成不同的数据库DML操作,不同的用户数(相当于web服务器端)的并发行为形成数据库负载,从而测试数据库性能。以下为不同NUMA设置下的数据库性能:
图注:在不同NUMA设置下的Oracle数据库性能,从测试结果来看,当NUMA为1时(即R7525服务器具有2个NUMA),Oracle数据库能够有更好的性能发挥。在测试中获得35000以上的TPS,合约210万左右的TPM
典型如Oracle为代表的数据库场景通常对计算、内存和存储性能都有极苛刻的性能需求。但是通过人为的设计,可以在一定程度上减小特定因素的影响。比如在上述测试中,E企研究院通过人为设置,降低了存储方面的因素对Oracle数据库的影响。而结合前文中计算性能的测试——NUMA设置对计算性能影响较小,所以上述主要反映了内存性能对Oracle数据库性能的影响。即当NUMA设置为1(R7525中有2个NUMA)最有利于Oracle数据库性能。
结合前文中内存延迟的测试来看,当NUMA设置为4时(即R7525有8个NUMA),实际上内存性能最好。但这一测试的前提是,负载相同且恒定,如所有核心实际上都执行相同的负载。但在实际场景中,如Oracle数据库,不同类型的数据库操作(DML,由用户行为产生)实际上对计算和内存都造成不同程度的负载(如不同操作需要不同的计算性能,不同的数据块尺寸导致不同的访问延迟),多变的压力负载,这会导致基于应用场景的测试结果区别于纯粹的实验室性能测试。
同时,E企研究院也评估了L3 Cache as NUMA Domain的启用或关闭,对Oracle数据库性能影响,其结果如下:
图注:在L3 Cache as NUMA Domain启用或关闭情况下,Oracle数据库性能。从测试来看,当L3 Cache as NUMA Domain关闭情况下,对负载稳定的应用环境有着较好的作用。如果应用负载随着时间有波峰波谷的变化,那么开启L3 Cache as NUMA Domain则有利于承载波峰性能
从上述的测试结果来看,Dell EMC PowerEdge R7525服务器在承载实际应用场景时,其最佳设置为NUMA为1,同时关闭L3 Cache as NUMA Domain。这与R7525服务器BIOS的默认设置相吻合,这也证明了Dell EMC经过充分测试才选择了这一默认设置。
需要注意的是,任何形式的测试,都与用户的实际应用场景有差距。在E企研究院的测试中,我们尽可能地模拟用户真实应用环境,但很难对负载随着时间的变化进行模拟,我们在设计测试场景的时候,其中目的之一是尽可能达到某一子系统的瓶颈(如计算、存储或网络),这一目的会使得我们尽可能增大压力负载,这会与用户实际场景的负载有区别,进而产生不同。
结合测试结果,以及E企研究院对R7525与EPYC处理器(主要是NUMA技术)的特点,我们认为:
**
在负载较小情况下,例如50%以下(资源较为富裕),在R7525服务器BIOS中的NUMA设置为4,并启用L3 Cache as NUMA Domain,这理论上有助于应用性能,典型如降低延迟;
而在负载较高情况下,尤其是计算性能接近饱和情况下(资源利用较高),将R7525服务器BIOS中的NUMA设置为1,并关闭L3 Cache as NUMA Domain,这更有利于性能。
**
篇幅所限,本篇测试解读先到此。但是关于R7525服务器还有一大有别于其他服务器的特点没有涉及——PCIe 4.0。第二代EPYC处理器率先支持了PCIe 4.0,R7525服务器也支持PCIe 4.0,但上述测试,并没有区别PCIe 4.0与目前主流采用的PCIe 3.0的不同。所以关于PCIe 4.0的测试,我们将在下一篇文章中介绍,敬请关注。