记一次CPU的“升级”评估

收到一家主力卖东西的公司质询,大致意思是:他们正在大量部署的某种型号的服务器平台,由于CPU、主板、内存三大件已经停产,所有决定换代升级为最新的平台。后经推荐选择了同等架构,同等核心数的另一款CPU。但在进行iperf 网络压力测试的时候,发觉新的平台极限网络压力无法突破16GB/s(猜测这个“大批量的”平台是用来做转发主机或者存储可能性较大),对比旧版本的平台为22GB/s,1/3 的性能下降让他们开始怀疑人生了……

拿到了两块CPU的配置,直接笑喷了。这根本就不是“升级”,简直就是“成本优化”,卖个关子,最后再对两个CPU的纸面数据做对比。出于工作的必要,于是让对方工程师在进行iperf压测的时候通过几个监控工具采样用以对比两个平台的不同以及性能差异的由来。

在众多监控工具的数据上,我采用了pqos的数据——简单明了。这个工具在我之前的帖子中也多次被提及,其实本身它只是一个Intel RDT的配置工具,在目前的几个主流Linux发行版中已经被收入,可以通过系统自带的软件管理工具简单的安装:

~# dnf install intel-cmt-cat  # for centos/fedora
~# apt install intel-cmt-cat  # for debian/ubuntu

使用的方法,也是简单,可以直接输出为csv文件,方便通过类似excel之类的工具直接分析。

~# pqos -r -o <filename.csv> -u csv

首先展示的是IPC,图中记录了A B两套主机上每个HT的平均IPC,A为旧机器。这个指标是指系统平均每个时钟周期的指令数——字面上自然是越大越好。另外有个容易混淆的CPI两者互为倒数关系,自然CPI越小越好。(感谢@Sirius的提醒,自己都搞晕了 )
毕竟是同一个架构下的产物,从数据上看两颗CPU并没有表现出较大的差距,一个0.76,一个0.77。那是不是就说明两台主机的性能应该表现一致了呢?这就是一个典型的误区!重复,IPC中C的含义是cycle,即时钟周期数,iperf这类的测试结果最终的结果最终会计算为GB每秒,那频率越高,每秒的时钟周期数就会越多,同等的ipc意味着跑分将直接取决于CPU的频率。

接着是L3 缓存的misses/s,即每秒L3缓存的miss数。有限的三级缓存会不断地通过lru算法淘汰旧的/冷的数据,填充新的/热的数据。但如果访问的数据并没有被L3cache保存,系统在请求L3失败之后就会记录一次L3 cache misses。当然,在正常使用中这个值越大,性能会越差。
图中,B,新平台的L3 cache misses/s和A的差距已经“无法放在同一个坐标系下展示”足足526倍的差距。

一并的,放上内存带宽的数据,L3 cache misses之后,系统将不得不直接从内存获取数据,过大的cache misses之后直接导致了B的内存带宽远高于A的。这是另一个理解误区,同一个应用并于一定是不是内存带宽消耗越大,系统性能越好的。
好在这张图上展示的系统内存带宽最差情况也仅有不到250MB/s,以DDR4-2666内存来计算,这带宽也就相当于一个内存DIMM的10%略高。即便8个核心并发达到最高,也就是刚刚触及到了20GB/s

回到L3 cache上来,那究竟是什么原因导致了两台主机的L3 cache misses 有了500倍以上的差距呢?这就要看L3 cache的occupancy(使用空间)了。cache 空间越大,被挤出的概率就越小。
数据展示出A的L3 occ接近10MB,而B仅有6MB。结果自然……

回到两块CPU的具体参数上,上图了(A← B→):

  • 尽管A B都是4核8线程的CPU,但A是一款3.5GHz CPU,B仅有1.5GHz,结合IPC部分的“基本一致”评价,得到事实上A的理论性能可以达到B的2.3倍。
  • A 和 B的实际L3大小和L3 occpuancy的测量大小基本一致,说明测试程序iperf对于L3的需求相对较多。B较少的L3容量导致了更高的L3 cache misses,以及后续一系列的内存带宽提升等问题。
  • 当然,B的优势也非常明显,22W的功耗对比140W可算得上是绿色环保的产品了。而且,就CPU单价来说A的价格正巧是B的两倍。

尽管说一分价钱一分货,但感觉还是有点搞技术的被搞采购的人坑了的意思。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据