再次吹响号角,扬帆更壮阔的征途:AMD EPYC 7F72/7F52处理器测试
扫描二维码
随时随地手机看文章
2019年8月,AMD创新性地将7nm工艺与最高64核心的第二代EPYC产品带入了企业级x86服务器市场。一年时间过去,对于AMD来说,第二代EPYC很好地完成了打开市场的任务。
但仅仅是打开市场却并非第二代EPYC的全部使命。
一年时间,AMD股价从30.45美元增长至85.55美元,涨幅180.95%
回望一年前的第二代AMD EPYC发布会,所有受邀发言客户均为顶级互联网公司和其他拥有超大规模数据中心的大型客户。显然,彼时的AMD目标十分明确:通过更高的核心数量来提升服务器大规模云化时的计算密度,进而使超大规模数据中心具备更强的服务及运营能力。
GCP上的实例创建页面,第二代AMD EPYC赫然在列
在AWSEC2上的c5a系列实例皆为第二代AMD EPYC平台
而从GCP和AWS为代表的一众顶级云服务提供商的接受度来看,第二代AMD EPYC已经很好地完成了发布之初的既定目标,成功打入了超大规模云数据中心以及顶级CSP市场。
这证明了AMD在芯片设计和市场营销等方面的成功。但既然第二代AMD EPYC如此成功,何不进一步发掘一下其潜力呢?
从第二代AMD EPYC产品列表来看,初期的EPYC 7002(第二代EPYC的产品编号)包含22款产品,核心数量从8到64,在8核、16核、24核、32核、48核、64核等主流核心数量段位上均安排了3-5款产品;在核数相同时,不同产品以频率和L3缓存配置不同加以区分。
不过,相对于竞争对手基数庞大的产品线,由22款产品组成的EPYC 7002序列仍旧稍显单薄。虽然AMD内部人士层表示,现阶段的AMD并不会将一些核心数量和频率的特化型号加入产品计划之中;但这并不意味着Milan来临之前,第二代AMD EPYC产品线会止步不前。
于是,AMD在2020年初在EPYC 7002系列之下发布了全新的7Fx2系列处理器。
7Fx2为更多企业用户带来新选择
作为Milan发布之前,第二代AMD EPYC中的最后成员,7Fx2系列包含3款产品,分别是24核心的7F72、16核心的7F52和8核心的7F32。
从3款新处理器与相同核心数量的原有型号对比中我们可以发现,三款新品除了在核心频率上有所加强之外,最核心的变动便在于CCD与核心的数量配比上。
而为了明晰其间的奥秘,我们有必要回顾Rome架构的一些特性。
Rome架构采用Chip Lets方式进行设计,在完整的64核心CPU之中包含了9个Die。9个Die分别是位于中间位置,负责内存控制和IO功能的IOD(IO Die);以及位于IOD周边的8个CCD(Core Compute Die)。
每个CCD内部包含两个CCX(Core Compute CompleX)结构。每个CCX包含4个Zen 2核心以及对应的L1指令及数据缓存、L2缓存。而每个CCX之内的4个核心则共享16MB的L3缓存。
在了解了这一结构之后,7Fx2三款新品的由来便十分明确。
7F72包含6个CCD,每个CCD之中有4个核心被激活。而由于被激活的4个核心分别位于2个CCX之上,所以每2个核心便可共享该CCX之内的全部16MB L3缓存。换句话说,7F72每核心拥有8MB L3缓存;整个CPU共有192MB L3缓存。
作为对比,原先的7402在物理结构上则只包含4个CCD,而每个CCD上的核心也只能分配到4MB L3缓存。这一核心数量与缓存的配比与64核心的7742保持一致。
同样的原理,7F32和7F52的核心与缓存配比则更为“奢华”,每个核心都可以用上其所在的CCX之上的全部16MB L3缓存。
当然,除了每核心L3数量的大升级之外,7Fx2系列也在基础频率和Boost频率上做了幅度不小的升级。
既然频率获得了提升、激活了更多的物理结构(包含更多CCD和其上L3缓存),那么处理器的功耗也自然会上涨。于是,我们便可以看到,3款7Fx2新品的默认TDP分别到了240W、240W和180W。
不过AMD相关人士表示,由于原先提供的散热参考设计仍旧保有余量,因此能够覆盖7742级别处理器的散热装置和设计可以继续在新的7Fx2系列上服役。
在了解了7Fx2系列处理器的特性及其细节构成之后,问题接踵而至。更新了特性的7Fx2系列处理器究竟面向怎样的用户和应用场景?
从AMD的PPT上我们可以看清三款处理器的官方定位——每核心性能以及企业应用环境中的领先价值。为了进一步阐明释意,AMD还附带了7Fx2系列的三种典型应用场景——超融合基础设施、商业HPC应用以及关系型数据库。同时,AMD还给出了其在商业市场中的最新进展——HPE Nutanix超融合产品、IBM Cloud裸金属云服务以及超微的Super Blade系列刀片服务器。
在超大规模云化数据中心当中,OS大部分来自开源项目或自研,软件堆栈的成本相对较低。因此,在通用计算类的云服务场景中,客户更关心每u所能提供的核心数量。毕竟,在EC2、Compute Engine等类似的服务中,实例是按照CPU的等级与核心数量来收费的。
而在企业环境中,软件堆栈大多来自商业授权,按照运行软件的Socket数量、核心数量甚至线程数量来收费。因此,在绝大部分商业应用中,用户关心的核心并非计算密度或核心数量,而是每个核心是否能够提供更高性能。由此,企业用户便可通过基础架构更新所带来的核心性能提升来获得软件成本与基础架构成本之间的全新平衡,进而降低商业应用的总成本。
显然,基于现有的Rome架构,继续推高频率和每核心缓存数量的EPYC 7Fx2系列,对于更多企业用户来说,会更接近他们的“甜蜜点”。
之于AMD,虽然超大规模云化数据中心能够为自身品牌和EPYC这一系列带来足够大的关注度和话题点,但超大规模数据中心本身并非行业的主流。因此,已经在这一市场斩获颇丰并引发市场和用户的足够关注之后,顺势推出市场覆盖面更广的、面向普通企业级应用的更多产品才是将关注转化为收入的正确方法。
7Fx2系列产品所承担的任务正是如此。
基础特性的升级让AMD有更多本钱来满足企业市场的需求,但这片市场也并非未被开垦的处女地。想要在这一市场获得成功,AMD不仅要为用户提供令人满意的性能,更需为用户带来令人满意的价格。
从目前已经掌握的信息来看,按官方指导价格(美元),7F72定价2450,7F52定价3100,7F32定价2100。
卡位8核的竞争对手,价格从2200美元到3400美元(去掉某些字母结尾的特化型号)。但从产品序列的厚度来看,8核心产品并非竞争对手企业级产品的主力关注领域。相反,有很多消费级、工作站W产品则在这一领域多有布局。即便抛开所有Rome架构的特性不谈,单从价格来看,EPYC 7F32的2100美元定价便具备相当的吸引力。
点击图片放大
卡位16核的竞争对手,价格从1400美元到3300美元;如果包含L结尾的超长生命周期型号的话,价格区间也会上探到约4800美元左右。而从表格宽度和竞品数量来看,16核心已经进入了主力产品区间。在价格层面,7F52定价3100美元,在16核心产品之中也属于高端产品。显然,要在这一定位中有所斩获,EPYC 7F72需要提供更强的性能;而这正是7F72所配备的256MBL3缓存、更高的频率以及8通道内存控制器的用武之地(当然,这里我们也需要提出,AMD与竞品采用的缓存架构不一样,竞品的优势在于更大的L2,而Rome的优势则在于L3更大)。
点击图片放大
而到了24核产品线,竞品的布局则可以用更加细密来形容,产品序列从Gold到Platium,价格范围也从1400美元左右到7000美元左右。7F72定价2450美元,单看价格便知是瞄准性价比而去的。
从AMD EPYC 7Fx2系列三款产品的价格层面,我们可以看出,虽然同属一个系列,但在不同的定位中,其目标细分却是有所不同的。除了在8核层面具备绝对价格优势的7F32,剩下两款7F52和7F72均会面对来自竞争对手相似定位产品的阻力。
7F52和7F72能否在自身的定位中获得比较优势,性能表现是关键。而这也正是本篇评测所关注的重点。
测试说明:
本次测试通过远程接入AMD测试机房的形式来进行。
系统配置:
AMD双路服务器使用了两颗AMD EPYC 7F72 24核处理器,支持超线程。如此,在系统中我们可以看到这台服务器有96个逻辑CPU。在测试中,Numa Nodes设置为2。
CPU信息:
具体到NUMA节点的设置,我们使用numactl进行了读取:
NUMAnode0 CPU(s): 0-23,48-71
NUMAnode1 CPU(s): 24-47,72-95
++ numactl -H
available:2 nodes (0-1)
node0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2348 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 7071
node0 size: 257847 MB
node0 free: 244781 MB
node1 cpus: 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 4344 45 46 47 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 9091 92 93 94 95
node1 size: 258009 MB
node1 free: 242836 MB
nodedistances:
node 0 1
0: 10 32
1: 32 10
可以看到两个NUMA node均分了逻辑CPU和512GB的内存。AMD双路服务器以性能见长,在此我们通过实验对这台服务器的性能进行了全面的评估。测试环境及工具如下:
CPU:AMD EPYC 7F72 24-Core Processor x2
Memory:512GB
Storage:NVMe SSD x1
OS:CentOS Linux release 8.1.1911 (Core)
Kernel:4.18.0-147.8.1.el8_1.x86_64
MySQL:MySQL8.0
Linpack:HPLinpack 2.3
Sysbench:sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
TPCCTest tool :PerconaTPCC-MySQL
HPL Linpack 2.3测试
Linpack是目前流行的理论性能测试工具,用于测试系统的浮点运算性能。在这一项目中我们使用更能突出系统并行计算能力的HPL Linpack 2.3来进行测试。
测试中,关键参数的设置为P=4,Q=3,N=239008, NB= 224。测试执行了4056秒,最终结果为PASSED,这款AMD EPYC 7F72双路服务器获得了2171.3 Gflops的成绩。
Sysbench 1.0.20测试
SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况;其中包括CPU、磁盘IO、调度程序性能、内存、POSIX线程性能、数据库性能(OLTP)等数个基准测试模块。在这里我们主要选取CPU、内存以及OLTP的测试结果。编译器方面,我们使用的是LuaJIT2.1.0 beta2。
CPU:
Sysbench CPU测试使用1,4,16,32,48,64,80,96及128线程分别对服务器压测300s,并记录双路AMD EPYC 7F72的速度及延时数据。结果如下图所示:
随着压力逐步上升,测试成绩也被划为三个阶段,第一个阶段压力明显偏小,CPU每秒钟执行的events数随着压力升高而升高,并且延时一直保持在2ms以内。当Threads超过48是,CPU测试成绩趋近于35000,而延时小幅增长,但是仍然低于3ms。第三个阶段,当压力超过系统的逻辑CPU数时,延时明显升高。Thread=96时,CPU Speed为34885.8 events/s,同时延时(95%)为2.76ms。
内存:
Sysbench内存测试中我们使用了1,4,16,32,48,64,80,96,128几种Threads几种不同的压力做4k写测试,每种压力测试10s。与CPU测试不同的是,这里我们展示的是内存写带宽和最大延时。
当Thread为1时,此时负载完全是4k顺序写,内存带宽成绩达到本次测试最大值13825.82MiB/s,此时最大延时为0.07ms。
OLTP:
Sysbench的OLTP测试则是模拟一个数据库的压测环境,对服务器性能进行全面评估。这项测试中我们将Sysbench的Tablesize分别设置为200000,500000,1000000,1500000,2000000;并使用32,48,64,80,96,128等几种不同的Threads参数进行组合测试。结果如下图:
本次测试固定为100个Table,将单个Table的数据量作为测试数据量规模的主要变量,而并发线程数作为并发压力的主要变量。从测试结果来看,在不同Table大小的情况下,线程数增加可以带来性能成线性增加,并且始终保持着5ms以内的低延时,并在最大并发压力128线程时取得最好的成绩,可以看出不同Table大小设置对于性能表现的影响并不大。显然,这与测试环境本身配置的512GB大内存有直接关系,如果MySQL的缓存被占满,数据需要不断下刷到SSD,届时延时将会明显升高。
峰值性能出现在Table大小为20W,线程数为128时,此时峰值性能为47873.84TPS,95%延时为4.25ms。
MySQL8 TPCC基准测试
此项测试中我们使用的数据库是Oracle官方的MySQL8.0,并使用Perconas的TPCC-MySQL工具进行测试。
TPCC是TPC(Transaction Processing PerformanceCouncil)设计的一个OLTP基准测试规范,TPCC模拟的是一个大型商品批发商的在线订单处理系统;这一大型商品批发商拥有N个位于不同区域的仓库,每个仓库负责为10个销售点供货,每个销售点有3000个客户,每个客户平均一个订单有10 项产品。
TPCC测试模型(source:http://www.tpc.org/)
TPCC测试涉及到了新订单处理、更新客户账户余额并反馈支付状态、发货、查询客户交易记录及仓储状态等操作。其中每分钟的新订单量也被称为TpmC,是TPCC测试最重要的指标。
通过设置仓库个数(N)的值及并发连接数,可以调节TPCC测试的压力。由于TPCC测试涉及的操作类型较多,所以应用下发的I/O模型是个复杂的混合读写模型。因此,TPCC测试是一个对系统、CPU、内存及存储等组件综合性能及稳定性的评估方案。
TPC不提供基准测试程序的代码,而只给出基准程序的标准规范。目前,很多厂商和实验室给出了符合TPCC测试规范的应用,本次我们测试使用的Percona TPCC-MySQL测试工具便是其中使用较为广泛的一种。
此次TPCC测试我们共生成了10000个仓库,整个数据库超过1.1TB,如此的数据库规模可以让压测短时间内充满系统Cache,让系统性能趋于稳定,避免大容量内存带来的结果偏高的现象。测试中将使用32,48,64,80,96,128几种不同的连接数对服务器进行压测,每次压测时间为30分钟(每次测试之前我们都会重启MySQL服务,以规避上次测试的影响)。首先是不同连接数的TPCC测试结果:
可以看到当Connection为48时,AMD EPYC 7F72双路系统的TPCC测试可以达到298951.875的TpmC的成绩。具体到Connection为48的这项测试,结果如下图:
可以看到TpmC值不足30万的实践主要集中在前10分钟,而之后的测试结果处于30万附近,且随时间的推进,测试成绩也趋于稳定。
OracleDB TPCC测试
最后,我们选择了商用数据库中最主流的产品——OracleDB来测试AMD EPYC 7F72双路系统的性能表现。
与之前使用的MySQL测试类似,通过设置仓库个数(N)的值及并发连接数,可以调节OracleDB的TPCC测试压力。测试中我们分别设置了1000、5000和12000三种warehouse数量,测试其在48、96、144和192个连接情况下的性能表现。
从上面的测试结果当中,我们可以看出无论warehouse数量多寡,峰值性能总是出现在96连接时。而在1000warehouse设置下,TPCC性能达到了峰值,为480,135TpmC。
在不同的warehouse数量的设置当中1000和5000的峰值性能表现较为接近;而当warehouse数量来到12000时,性能下降则比较明显,并且不同连接数时的性能差异也在收窄,说明这一数量的warehouse已经达到了双路7F72系统的性能瓶颈。
在相同的系统环境下,我们通过更换处理器的方式进行AMD EPYC 7F52双路处理器的性能测试。NUMA Nodes同样设置为2。
CPU信息:
系统环境如下:
AMD EPYC 7F52 16-Core Processor x2
Memory:512GB
Storage:NVMe SSD x1
OS:CentOS Linux release 8.1.1911 (Core)
Kernel:4.18.0-147.8.1.el8_1.x86_64
MySQL:MySQL 8.0
Linpack:HPLinpack 2.3
Sysbench:sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
TPCCTest tool :PerconaTPCC-MySQL
HPL Linpack 2.3测试
Linpack是目前流行的理论性能测试工具,用于测试系统的浮点运算性能。在这一项目中我们使用更能突出系统并行计算能力的HPL来进行测试。其中关键参数P=4,Q=4,N=239008, NB= 224.测试执行了4056秒,最终结果为PASSED,这款AMD EPYC 7F52双路服务器获得了1616.8Gflops的成绩。
Sysbench 1.0.20测试
SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况;其中包括CPU、磁盘IO、调度程序性能、内存、POSIX线程性能、数据库性能(OLTP)等数个基准测试模块。在这里我们主要选取CPU、内存以及OLTP的测试结果。编译器方面,我们使用的是LuaJIT2.1.0 beta2。
CPU:
Sysbench CPU测试使用1,4,16,32,48,64,80,96及128线程分别对服务器压测300s,并记录双路AMD EPYC 7F52的速度及延时数据。结果如下图所示:
随着压力逐步上升,测试成绩也被划为三个阶段,第一个阶段压力明显偏小,CPU每秒钟执行的events数随着压力升高而升高,并且延时一直保持在2ms以内。当Threads数量超过64时,CPU测试成绩趋近于最高的24500左右,而延时小幅增长至2.6ms左右。第三个阶段,当压力超过系统的逻辑CPU数,延时明显升高。Thread=64时,CPU Speed为24511.22events/s,同时延时(95%)为2.61ms。
内存:
Sysbench内存测试中我们使用了1,4,16,32,48,64,80,96,128几种Threads几种不同的压力做4k写测试,每种压力测试10秒。与CPU测试不同的是,这里我们展示的是内存写带宽和最大延时。
当Thread为1时,此时负载完全是4k顺序写,内存带宽成绩达到本次测试最大值14419.09MiB/s,此时延时小于0.01ms(推测受限于sysbench报告的0.01ms,测试中看到的是0。)
OLTP:
Sysbench的OLTP测试则是模拟一个数据库的压测环境,对服务器性能进行全面评估。这项测试中我们将Sysbench的Tablesize分别设置为200000,500000,1000000,1500000,2000000,并与32,48,64,80,96,128几种不同的Threads参数进行组合测试。结果如下图:
从测试结果来看,在不同Table大小的情况下,128线程的设置均能够取得最好的成绩,且不同Table大小设置对于性能表现的影响并不大。显然,这与测试环境本身配置的512GB大内存及强大的整体性能有直接关系;即便Table大小达到200W,仍然没有达到服务器的性能上限。
测试中的峰值性能出现在Table大小为20W、线程数为128时,此时峰值性能为33202.08TPS。
MySQL8 TPCC基准测试:
此项测试中我们同样使用了Oracle发布的MySQL8,并使用Percona发布的TPCC-MySQL工具进行测试。
此次TPCC测试我们共生成了10000个仓库,整个数据库超过1.1TB。
测试中将使用8,16,32,64,128几种不同的连接数对服务器进行压测,每次压测时间为30分钟(每次测试之前我们都会重启MySQL服务,以规避上次测试的影响)。首先是多次TPCC测试的结果:
可以看到当Connection为64时,AMD EPYC 7F52的TPCC测试可以达到峰值的243537.266TpmC。在Connection为64时,随时间变化的性能曲线如下图:
从上面的图标中,我们可以看到,随着测试的进行,系统在前13分钟内性能稳步上升,并在第16分钟时达到峰值。但随着测试的继续进行,MySQL的缓存逐渐消耗殆尽,数据需要下刷到磁盘,系统性能会出现轻微波动和缓慢下降,从测试看系统综合性能最后仍会稳定在24万TpmC附近。
凭借优秀的Rome架构,AMD终于再次向更主流的企业级市场发起了进攻。
而与以往不同的是,此次蓄力而来的AMD带着的是在超大规模处理器市场所积累的优秀口碑、EPYC 7Fx2系列和众多产品的优秀性能以及Rome架构本身的众多先进特性。与此同时,AMD更为此次的EPYC 7Fx2系列产品规划了优异的性价比。
7Fx2系列虽是Rome系列的最后成员,但其为AMD所打开的企业级市场大门却让AMD和整个市场都可以在2020年市场和之后即将发布的Milan中期待更多。
AMD在企业级市场的再次崛起与其近年来带给用户的更多惊喜说明一个道理,尽管路长且险,但未来仍未有定数;技术不停歇,我们都应保持期待。
【IT葡萄皮】(公众号:itopics)由资深媒体人张垞运营。从业十二年的深度观察,只为一篇不吐不快的科技评论。
联系方式
电话:18612920630
电子邮件:69240891@163.com
微信:z87136954
QQ:87136954
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!