做技术的朋友可能有过类似这样的感觉——每天都会遇到新的问题,或者学到新的知识。然而一个人的时间和精力毕竟有限,不是所有的岗位都能做到总是亲力亲为,每人最擅长的领域也各不相同。为了使工程师自己踩过的坑、那些实用的心得体会也能给大家带来帮助,把经验记录和分享出来就显得尤为可贵,这就是我们开设《工程师笔记》专栏的目的。
一项Xeon E5-2600 v4测试数据的背后
Intel新一代服务器处理器Xeon E5-2637 v4标称的内存带宽76.8GB/s,达到了该系列的最高水平,不过在实测中它与有的同门兄弟相比却有一些差距。类似的情况也出现在E5-2623 v4几款上面,这是为什么呢?
从Pentium III Xeon 933 PK Pentium III 933说起
在准备撰写本文的过程中,我想起10多年前的一个故事,也是与Intel Xeon(至强)CPU相关的
![](http://www.d1net.com/uploadfile/2016/0719/20160719101716810.png)
Pentium III Xeon 733-933,Slot-2、133MHz前端总线、256KB全速L2 Cache
搞服务器比较早的朋友可能还记得,Intel第一代服务器专用处理器是Pentium Pro,当年我见过单Socket 8插槽的Pentium Pro主板(华硕P6NP5)。当桌面产品线升级到Pentium II和Pentium III时,开始出现相对应采用Slot 2插槽的Xeon产品线。Pentium II Xeon和早期的Pentium III Xeon L2 Cache容量有1-2MB,当时CPU的工艺还难以将如此大容量SRAM和CPU内核集成到一个Die上面。
从133MHz前端总线的Pentium III Xeon开始,Intel直接将on-die 256KB二级缓存的Pentium III设计拿过来用。不过当时的用户也不傻,比如Pentium III Xeon 700 2MB的价格高达1万多,而Pentium III Xeon 866/933 256KB大约在5-6千元。
相比之下,同样256KB 缓存的Pentium III 933只有2千多。那时候我还真碰上一位用户就要选择Xeon 933,理由是他了解到性能比普通Pentium III高出5%。
从那往后到Pentium 4与Intel Xeon的一段时间内,除了单双路和CPU封装/主板不同之外,服务器与桌面CPU规格上差别确实不大。一对一的性能差距,有时就是Intel将L2 Cache时序设置不同这样的原因。
内存带宽测试及实际应用价值
硬件设计上的不同,会反映在有些性能测试中。CPU Cache会影响到处理器访问内存的效率,包括缓存命中率等。在本文中我们讨论内存带宽测试,目的就是分析影响到该性能的CPU参数,由于今天的CPU比当初要复杂很多,所以得出结论不会那么简单。
![](http://www.d1net.com/uploadfile/2016/0719/20160719101800155.jpg)
引用自《Performance and Energy Efficiency of Dell PowerEdge Servers with E5-2600 v4》
在4月1日那天,Intel正式发布了新一代双路服务器处理器Intel Xeon E5-2600 v4,随之而来的有更先进的工艺、更多的核心、更高的处理能力和能效比等。当然若干项基准测试纪录又一次被刷新了。
各种漂亮的数据我不想一一列举,上图来自一份戴尔文档的“Memory subsystem performance”部分,可以看到在相同的PowerEdge 13G服务器平台上v4处理器测出的内存带宽比v3更高。这一点倒是不意外,因为Xeon E5-2600 v4内存支持到DDR4 2400,而v3只能到DDR4 2133。
而我也听不少用户反映过,说他们的应用对内存带宽不敏感,只要配置的容量够了就行。这个确实与应用类型有关,哪些用户需要更多在意这个指标呢?
![](http://www.d1net.com/uploadfile/2016/0719/20160719101836450.png)
上图的Linpack浮点计算性能测试,是HPC(高性能计算)行业所公认的。我们看到,在相同主频、核心数、内存频率以及功耗的情况下,BDW(Broadwell,Xeon E5-2667 v4)的核心效率比上一代Xeon E5-2667 v3提高了13%。
而在将Xeon E5v4的内存频率提高到DDR4 2400之后,性能又有进一步提高。初步结论就是高内存带宽对高性能计算应用是有价值的。
性能不完全符合理论值,原因何在?
![](http://www.d1net.com/uploadfile/2016/0719/20160719101910741.png)
2016年2月SPA lab使用Dell PowerEdge R730服务器测试
真正引发我们撰写本文的,是上面这个对比图表。首先我标出了一个小错误,E5-2630 v4是10核心而不是8核,它与大部分型号的L3 Cache配置都是2.5MB per Core。而在这一代产品中也有一个例外,E5-2667 v4、E5-2643 v4和E5-2637 v4这三款频率优化型CPU的L3 Cache大于这个比例。
我最初看到这个对比时有些不解之处:测试结果并不完全按照理论内存带宽排列,而是有些意外之处(红圈部分)。同时我们也注意到图中还有关于内存控制器数量的描述,从最左边的E5-2699 v4到E5-2650(L) v4这些12核及以上的CPU都是2个内存控制器,右边的10核及以下的只有1个内存控制器。
![](http://www.d1net.com/uploadfile/2016/0719/20160719103112370.png)
上图截自http://ark.intel.com网站,正如我们在本文开头所述,单内存控制器(同样支持4通道DDR4 2400)的E5-2667 v4、E5-2643 v4和E5-2637 v4,标称内存带宽与双内存控制器的型号同为76.8GB/s。
接下来我们就想探究影响这一测试结果的原因,先列出几种可能性(多选):
a.内存频率
b.内存控制器数量?
c.QPI带宽?
d.L3 Cache容量?
e.环形总线(Ring bus)瓶颈?
f.CPU核心数量 or 主频?
首先第1点不用问了,第2点根据对比数字和戴尔文档中的标识也可以基本确认;接下来就是看下列几个疑点与c/d/e/f中的哪些项目相关:
1.E5-2637 v4(4核心)测试内存带宽落后于另外2款DDR4 2400单内存控制器的CPU;
2.E5-2623 v4(4核心)测试内存带宽落后于另外3款DDR4 2133单内存控制器的CPU;
3.E5-2603 v4(6核心)测试内存带宽落后于同为DDR4 1866单内存控制器的E5-2609 v4。
注:Xeon E5-2623 v4官网标称的内存带宽,与其它DDR4 2133单内存控制器的CPU同为68.3GB/s。
STREAM测试工具、OSB+DIR snoop新特性
由于要分析性能瓶颈,我们就需要对测试工具及其产生的压力负载进行了解。为此我请教了一位朋友——戴尔解决方案顾问杨小雷,下面是他发的一条微博。
![](http://www.d1net.com/uploadfile/2016/0719/20160719103159387.jpg)
通过与这位朋友的交流我还得知:STREAM工具测出来的带宽要在BIOS里设置本地访问的模式,就是它下面标的OSB+DIR snoop。所以理论上的内存带宽是每个CPU理论最大带宽的2倍。这是Broadwell的默认模式,Xeon E5-2600 v4的新特性,以前没有的。
这样一来QPI带宽的因素也可以排除了。关于“snoop”,让我回想起2008年撰写过的Intel Xeon 5400服务器/工作站平台:
“Snoop Filter(探听过滤器)是一种特殊的缓存,用于存储CPU二级缓存的索引信息(只是包括其标签和状态,不包括数据),有助于减少处理器的前端总线发生数据堵塞的情况,提高前端总线的效率。Snoop Filter的容量要大于或等于每个CPU二级缓存容量之和才能发挥最佳的作用,5400系列处理器的二级缓存从5300系列的8MB增加到12MB,相应的5400芯片组中Snoop Filter也由5000X的16MB增加到24MB。”
如今发生了一些变化,CPU整合了内存控制器(IMC),多处理器Xeon平台也从SMP变成了NUMA架构。如果我没理解错的话,类似于Snoop Filter的功能现放在CPU上实现,而L3 Cache的部分功能就是包含每个Core的L1 Cache和L2 Cache数据,以保证缓存的全局一致性访问。
![](http://www.d1net.com/uploadfile/2016/0719/20160719103231597.png)
上表引用自《Measuring Performance of Intel Broadwell Processors with High Performance Computing Benchmarks》
Xeon E5v4架构:L3 Cache容量影响内存带宽发挥
这结论看似顺理成章,但并不是每一次拍脑袋都能正确,所以我们才要建立在实测数据分析的基础上。另外,还有没有读者不了解为什么Xeon E5会有单/双两种不同的内存控制器数量?
![](http://www.d1net.com/uploadfile/2016/0719/20160719103303648.jpg)
上图(点击放大)来自国外网站,其中红框标出的部分与最终发布的产品规格有少量出入
Broadwell EP即Xeon E5-2600 v4的代号,其实从v2开始Intel超过10核心就采用2个(对)环形总线和双内存控制器(总数还是4通道)的设计。
与上图有所出入的是,最右边的单内存控制器(LCC)也包括10核心的Xeon E5-2640 v4和Xeon E5-2630L v4。前文中我们确认了将内存控制器连接到环形总线的Home Agent在DDR4 2400这样高频率下可能成为瓶颈。
接下来就靠数字分析了,在这里省略掉我思考的过程。根据前面列出的Xeon E5-2600 v4全线内存带宽对比,4核10MB L3 Cache的2623 v4表现最低;另外2款较低的E5-2637 v4(4核心)E5-2603 v4(6核心)都是15MB L3 Cache;而在L3 Cache达到20MB之后,STREAM测试的数值基本上就是内存频率的反映了。
![](http://www.d1net.com/uploadfile/2016/0719/20160719103336683.png)
Intel有意为频率优化型CPU补短?
Intel Xeon E5-2600 v4系列中的几款频率优化型CPU,由于减少了核心数量,相应的内存控制器数量和L3 Cache也受到影响,尽管它们仍支持较高的内存频率,但实际带宽性能表现受到一定影响。大多数HPC应用讲究计算的并行度和能耗比,估计不会选择这几款;而在意单线程性能的应用(如:工作站),对内存带宽不见得敏感。
而另一方面,Intel将E5-2667 v4、E5-2643 v4和E5-2637 v4这三款CPU的L3 Cache加大,客观上减少了实际内存带宽下降的幅度。
====================================分割线================================
本文转自d1net(转载)