因为前几年听书《明朝的那些事》,我曾慕名去了两个地方,一个是杭州于谦故居,另一个就是贵阳的阳明祠。对于看书不多的我来说,从那时起有些崇拜王守仁和他那“知行合一”的哲学理论。
其实技术上有些思路,也是与哲学相通的。
从TurboBoost初期的3ds Max渲染测试说起
当年3ds Max的渲染测试截图不好找了,我就拿一张SolidWorks最终渲染的屏幕照片做为替代,正好前一段测试了Dell Precision T5810和T3420工作站。手机拍的质量不好大家见谅:)
记得Intel从10来年前的Xeon 5500系列时期引入TurboBoost睿频技术,这一动作当时似乎没有将内存控制器、以及后来的PCIe控制器整合进CPU那么受人关注。本质上说是CPU技术发展遇到频率功耗墙——然后开始推多核——部分软件的并发线程上不去导致有的核心空闲。此时CPU功耗距离TDP(热设计功耗)尚有余量,不如索性自动“超频”来提高性能。
谈到图形工作站上的CPU渲染(或者说最终生成),无论3ds Max还是SolidWorks等都会充分把CPU的线程用满。比如我在上图中圈出的16个“小窗”,实际上是一颗4核8线程的Intel Xeon E5-1620 v4 CPU,拍照时正好处于前8个小窗渲完,另外新开8个小窗的切换时刻。这里TurboBoost能发挥作用吗?
上面引用这份较早的资料,今天还是同样的道理。处于活动的CPU核心越少,TurboBoost可超频的幅度就越大,这一点我想许多做技术的朋友都清楚。而当所有核心被程序占满时,Intel部分CPU还支持小幅的TurboBoost,据说判断标准是此时TDP是否超标。
具体到实际产品上,当年我测过一款Xeon W5580的工作站,3ds Max渲染时监控CPU主频,印象中就是以1秒间隔很规律的在3.20GHz和3.33GHz之间切换。这样当然也比频率一直固定在3.20GHz原始频率上效率要高一点,但不是所有应用都适合这么干。前两天还与做数据库的朋友聊过这个,比如金融行业需要稳定低延时的高频交易应用,就不希望CPU频率跳来跳去。
这时大家可能会想起服务器/工作站BIOS里有个限制CPU核心数的选项,对于某些要求单核心性能的应用,修改这个应该可以把TurboBoost幅度保持在高水平。另外,理论上每颗CPU的TurboBoost和节电状态可以根据负载不同来单独控制,那么可以给一台服务器上多个CPU限制不同的核心数吗?
例如以前有的4核CPU TurboBoost的描述是3/2/2/1,也就是从单核到4核能够超频的幅度(100或133MHz的倍数)。那么如果我们预设目标是双核的频率+200MHz,TurboBoost能否设一个上限选项?以确保在只有一个Core活动时频率也不会往上跳。
写到这里,我还想起之前在撰写《一项Xeon E5-2600 v4测试数据的背后》时看过的一份资料。
AVX与non-AVX Turbo频率的差异
引用自《Performance and Energy Efficiency of Dell PowerEdge Servers withE5-2600 v4》
上图的字有点小,点击放大后可以看清。从这里我了解到之前没太注意的一点,目前流行的Xeon E5 v4等Intel CPU在执行AVX指令时频率会有所降低,估计也是功耗方面考虑吧。这个频率也分为至少3种——TDP基础频率、最大Turbo频率、全部核心最大Turbo频率——在AVX和non-AVX状态下都可能会有不同。
这里有个问题,双路或者四路服务器,当部分CPU上有AVX指令运行是否会影响到余下CPU的频率?当时我并没有想到这一点,而最近才了解到这些早已有人考虑过。
DPAT处理器加速技术:原理上并不复杂
上图来自我在网上搜到的一个文档,Dell亚太区服务器产品经理吴鹏程曾经分享的资料《戴尔13G服务器性能提升与最佳实践》,里面提到了Dell Processor AccelerationTechnology(DPAT)2.0技术。
这里给出的图示应该不难理解,我这人写技术喜欢捞干货。正如前面所讲的,如果所有CPU核心都开着,你不能保证在几个线程工作的情况下不会有其它程序偶尔把别的空闲核心也用起来(即使做了绑核),这时TurboBoost频率就会受到影响。
上图介绍了DPAT技术实现的几种场景
DPAT1.0:我理解就是在全部核心工作时稳定TurboBoost的水平;
DPATPro场景1:所有CPU运行Non-AVX代码,只限制CPU1的核心数到4 Core3.3G Turbo,CPU 2跑在18 Core最大Turbo频率2.8G;
DPATPro场景2:跑满全部核心,但只有一个CPU运行AVX代码,此时2颗CPU频率相差200MHz;
DPATPro场景3:与场景1的区别在于,全部CPU或者只有CPU2运行AVX代码,此时CPU2的最大Turbo频率降为2.6G。
据了解DPAT是个免费的技术,只需要在做服务器配置时选择一个License即可支持。使用中有多种途径可以打开,最简单的一个方法是在BIOS中可以看到Number of Cores for Processor 1这样针对每颗CPU的核心数的限制,还有Processor 1 Controlled Turbo可以独立调整每颗CPU TurboBoost频率上限的选项。
同时应确保System Profile设置为Performance mode,或者Custom mode选项并将CPU Power Management设为Maximum Performance mode并打开Turbo Boost mode。
上面是DPAT针对的主要目标应用场景。如果有用户想详细了解Intel CPU在使用不同核心数时设计的具体TurboBoost档位,另外还有Dell针对低延时应用环境的更多最佳实践,可以找这方面的技术顾问来咨询。
最后再推荐给大家一篇我写的《 无奖竞猜:影响服务器性能的内存配置 》