摘要
最近要进行信创环境与非信创环境的性能对比.
突然发现,公司内部大部分压测环境都比较陈旧了.
大部分压测环境服务器都是使用超过五年的服务器.
直接拿来与最新的信创环境对比, 其实是给信创设备开了很大一个后门
但是就算如此. 信创可能都拼不过intel的设备 !-_-!
也是基于次, 想分析一下最近CPU的发展脉络. 也是对性能测试工作一个参考.
x86 CPU的发展脉络
Intel 最早是进行内存研发与生产的企业. 从第一代4004 CPU开始 历经 8086 8088 等远古时代的发展.
从 80386 80486 到开始拿出 奔腾 的商标 进行研发.
在上世纪的最后几年. Intel开始逐渐发力 企业市场, 发布奔腾至强服务器CPU.
至强一般用于企业市场. 核心和架构一般会落后于消费市场一年左右的时间. 但是更加复杂和昂贵.
进入21世纪. AMD提前发布的AMD64指令集以及第一款双核速龙, 直接将CPU从高主频竞争拖入了多核心竞争.
Intel 于2006年左右开始推出 酷睿系列. 一直是消费市场的主力
同时间, 至强经历了
1. XEON xxxx (基本上都是电子垃圾了, 不用买不要用)
2. XEON E3/5/7 XXXX v1/2/3/4 (第一位 和后面的数字越大,同代里面基本上性能越好, V表示代数,代数越新性能越好)
3. XEON Scalable 3/5/6/8xxx 命名规则 bronze silver golden platinum 一般也是数字越大性能越好.
需要注意 最新的至强可扩展CPU已经发布到了第四代.
制程与架构都是最新的.
第四代采用 Intel 7 工艺 最高60核心 120线程. 可支持 2-8路互连.
是现在Intel最高级别的服务器CPU.
需要注意intel最新架构也采用XCC和MCC两种模式, XCC, 一个CPU内部应该有四个NUMA节点, MCC 应该只有一个NUMA节点. 需要注意.
AMD的EPYC 第四单元开做到 96-128核心 最多 单路 256线程的CPU
但是AMD一般只支持2路互连, 更高的互连基本上不提供.
intel CPU的最新命名规律

鲲鹏CPU的命名规律

影响CPU性能的一些因素
CPU的性能影响主要有如下几个方面
1. 指令集 - AVX 加解密 硬件ASIC
2. 架构 - 流水线 多发射 乱序 缓存大小模式 寄存器数量 IPC
3. 制程工艺 - 最高主频 散热
4. 芯片互连 - NUMA损耗 跳数
5. 内存通道的数量/代/等效频率
6. 其他外部接口的数量/代/参数性能
7. 主板质量以及BIOS优化.
8. 操作系统版本,内核,参数优化.
影响性能的简单说明-1
1. 随着CPU的发展, Intel的CPU都是会向前兼容, 但是会同步增加一些新的指令集.
比如新版本都会有最新的AVX512指令, 或者是增加很多AI指令.部分最新编译的程序执行效率会有较大的提升.
也比如国产的海光鲲鹏可能会增加SM3 SM4等国密硬件指令集, 对国密的算法性能会有较大的提高.
2. 架构 指令集的下一层就是架构. 刚才描述十几代的IntelCPU 都是x86指令集. 架构却是日新月异的
不同的架构的流水线长度深度, 指令解码发射数量. 乱序执行的命令池, 缓存大小与缓存分配方式, 寄存器.会有较大的区别
一般新的架构都会有一定程度的提升. 一定程度上会提升IPC, 来提高性能.
3. 制程工艺 现在最火的荷兰的ASML的EUV光刻机就对应制程工艺的最核心部分. 一般制程越先进. 晶体管越小. 电压越低,频率越高
相应的散热减少, 性能提升. 并且一些先进的分装工艺, 比如Apple的统一内存, 会极大的提升系统整体性能.
前面三个几乎决定了芯片的单核心能力和最大支撑能力.
4. 芯片互连
AMD的EPYC 其实是CCX+IO die进行chiplet封装的模式. 不同CCX的核心访问内存是不一样的. 是不同的NUMA节点.
除了一个封装内部.同步的socket之间的互连会决定整个服务器的性能. 一般会通过跨socket的内存延迟带宽等进行验证
对应到CPU的发展. Intel 最开始采用QPI 然后慢慢到UPI 带宽成倍上升.
影响性能的简单说明-2
5. 内存通道: 主要有内存通道数量, 代数, 等效工作内存, 时延等参数.
最新的服务器都是DDR5的内存, 6400M的等效频率, 可以做到8通道, 算法为(6.4*8*8)实现400GB/S的内存访带宽
较早的服务器可能只是DDR3的内存, 只有 2400M左右的等效频率的3通道服务器. 带宽不超过60GB/S
单纯这一点就有了较大的提升, 数据处理能力剧增.
另外内存还有一个刷新时间效率, latency延迟等情况. 都会有影响性能. 高频低延迟的内存对提高尤其是数据库类型的性能有极大的效率.
6. 其他外部接口 现在基本上都已经是PCI-E 一统天下. 很早的CPU还有南桥和北桥. 内存控制器甚至在北桥里面. 所有的设备争用FSB. 导致性能瓶颈严重
现在新的设备都至少PCI-E4代 甚至是PCI-E5代. 对磁盘,网络的性能影响巨大. 现在外接网卡外界硬盘 raid设备等都是走如此的接口
他的接口lane数 以及代数严重影响机器的与外面的访问效率. 越新的CPU一半代数越高 性能越好.
7. 主板质量以及BIOS优化. 不同厂商的主板的质量 布线能力以及抗干扰情况对服务器都有一定程度的影响.
BIOS版本对CPU以及硬件性能也可能有较高的性能, 最近最出名的莫过于 为了解决 meltdown的intelCPU的内核漏洞, 更新bios补丁导致性能衰退10%
不好的布线 导致串扰严重 也会导致信道里面消息重传增加影响性能.
8. 操作系统版本, 内核, 优化参数. linux内核发展很快, 一般新的内核才会发挥最新硬件的性能, 最明显的莫过于numa开启的bug导致在多核心多路服务器一开始运行数据库时
都要求进行numa关闭的操作, 导致性能衰退, 最新的操作系统, 最新的内核才能够发挥最新的硬件性能.
不同的内核参数, 是针对高性能,还是针对高可用也是不相同的. 需要进行严格验证.
总结
1. 一般同频单核性能牙膏厂的CPU都会有5%的性能提升. 加上主频的优化以及其他接口性能的提升, 可以认为基本上每一次新CPU都会带来10%以上的性能优化.
日积月累新服务器的性能会比老服务器有很大的提升 注意, 这里一般需要说明是两代CPU是基本相同价位, 相同客户群的情况.
2. intel的CPU分类非常广泛, 同一代的CPU会有高内核,高主频,高内存等多种维度的区分, 分别面对不通的应用场景.
多内核可以用于虚拟化. 多内存可以用于大数据, 高主频可以用于像是redis等内存或者是不需要太多核数的低并发数但是要求快速响应的数据库场景.
购买不同的CPU的产品效果也是完全不同的
3. 建议尽早升级系统,升级外设,升级协议, 比如上NVMe 上高速内存. 上更新的网卡协议, 更新的操作系统内核等才能更好的发挥硬件的性能.
4. 编译器相关: 建议使用架构专属编译器, 共性可以运行的软件肯定抹平特性的性能优化的部分. 有提交还是需要有转述编译器进行优化过的二进制更好一些.
比如采用专属编译器编译redis nginx. 使用特定的优化参数内存分配算法工具. 使用操作系统厂商或者是CPU厂商优化过的编译器或者是jdk等软件.
文章转载自济南小老虎,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




