信创服务器性能对比:海光、鲲鹏与Intel实测

国产信创服务器海光、鲲鹏与Intel性能实测对比,鲲鹏CPU性能突出,但整体性能与Intel仍有差距。

原文标题:信创服务器海光和鲲鹏性能测试对比

原文作者:牧羊人的方向

冷月清谈:

本文对国产信创服务器海光(X86架构)和鲲鹏(ARM架构)与Intel服务器进行了性能测试对比。测试涵盖CPU、内存、磁盘IO以及主键查询、单插入和混合读写等场景。

结果显示,在CPU性能方面,鲲鹏表现最佳,Intel和海光相差不大,但鲲鹏在高并发下CPU使用率存在瓶颈。内存性能方面,三者差别不大,鲲鹏略优。磁盘IO方面,Intel最佳,鲲鹏次之,海光相对较差。

在数据库测试中,Intel服务器在主键查询、单插入和混合读写场景下均表现最佳,海光次之,鲲鹏相对较弱。尤其在TPS和时延方面,海光和鲲鹏与Intel存在一定差距。

总而言之,国产服务器与Intel服务器相比,性能上仍存在一定差距,但鲲鹏在CPU性能方面表现出的优势值得关注。国产芯片正不断迭代发展,在信创领域,鲲鹏和海光都占据了重要的市场份额。

怜星夜思:

1、文章提到鲲鹏服务器在高并发下CPU使用率上不去,这是什么原因造成的呢?是架构问题、软件优化问题还是其他原因?
2、文章中对比了海光和鲲鹏的性能,但没有提及功耗。在实际应用中,功耗也是一个重要的考虑因素,这方面两者表现如何?
3、信创服务器的发展对于打破国外技术垄断至关重要。除了性能,生态建设也是关键。目前国内信创服务器生态发展情况如何?

原文内容

国产信创服务器是近些年信创突破的重点,面对技术封锁和卡脖子限制,如何实现真正的芯片自主可控也是业界发力的方向。在信创服务器主流市场海光和鲲鹏有哪些差异,性能表现如何,本文将简单介绍,并结合信创服务器的性能对比测试进行分析

1、国产CPU基本概念介绍
1.1 CPU架构及指令集介绍
1.1.1 CPU架构
CPU(中央处理器)作为计算机系统的运算和控制核心,是信息处理、程序执行的最终执行单元,主要功能包括指令控制、操作控制、时间控制和数据加工。CPU内部通常由三个主要部分组成:运算器、控制器和寄存器
  • 运算器:主要负责进行算术运算和逻辑运算,包括加减乘除等基本算术操作,以及与、或、非等逻辑操作。

  • 控制器:作为CPU的指挥中心,负责调度程序、指令并执行指令,以及管理协调各个部件的运作。它通过读取内存中的指令,并指挥运算器进行运算,同时负责与内存、输入/输出设备进行通信,控制信息的流动。

  • 寄存器:用于存储CPU内部的临时数据或状态信息,包括指令寄存器(IR)、数据寄存器(DR)、状态寄存器等。

此外,CPU内部还有高速缓冲存储器(Cache)等组件,用于提高数据和指令的访问速度,降低内存访问延迟。

1.1.2 指令集架构

CPU指令集是计算机中计算和控制计算机系统的所有指令的集合,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部 I/O。简单地来说,指令集一般被整合在操作系统内核最底层的硬件抽象层中,属于计算机中硬件与软件的接口,它向操作系统定义了CPU的基本功能。

现阶段CPU指令集分为CISC(复杂指令集)和RISC(简单指令集)两种。
  • CISC指令集是早期的指令集架构,它的指令数目较少,但每条指令的操作步骤较多,因此指令较为复杂和庞大。CISC架构的CPU中,对于指令的执行需要依赖CPU中设计的逻辑来实现,这会增加CPU结构的复杂性和对CPU工艺的要求。

  • RISC指令集则是一种精简指令集,是在CISC指令集的基础上发展起来的。它的指令数量较多,但每条指令的操作步骤较少,因此每条指令都较短,指令格式种类少,寻址方式种类也较少。RISC只要求硬件执行很有限且最常用的那部分执令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。

CISC和RISC指令集对比如下表所示:
CISC和RISC发展到现在无论哪一方都没有绝对的优势和劣势,在阵营上CISC以Intel、AMD的X86架构为代表,RISC则以ARM、MIPS、PowerPC等架构为代表。从硬件和性能角度分析,有以下不同:
  • 从硬件角度:CISC采用的是不定长的指令集,更加适用于特定专业领域的应用;RISC执行的是等长的精简指令集,在并行处理方面明显优于CISC。另外RISC执行的精简指令集在硬件层面实现工艺上更为简单廉价。

  • 从性能角度:在发展过程中,以Intel、AMD为代表的CISC阵营对芯片性能的提升做了很多优化,以Intel奔腾系列为代表的CPU处理器在PC机市场占有绝对的优势;而RISC由于起步晚了十年,本身在市场占有以及软件生态上不具备先天优势,专注于以低功耗为前提的高性能芯片。

随着后续技术和生态的发展,CISC和RISC也逐渐走向融合,以X86架构CISC处理器占据了个人PC市场,以ARM架构RISC处理器占据了移动端市场,并随着云计算市场的发展,ARM架构RISC处理器也向服务器市场扩张。

1.2 X86架构与ARM架构对比
在国内信创服务器领域,以海光为代表的X86架构和以鲲鹏为代表的ARM架构占据了绝对的份额。鲲鹏和海光占据性能优势,在电信、金融等行业已经广泛采用,比如中国移动在2022年上半年发布了服务器补充采购的招标公告,本次补采鲲鹏服务器占比43.30%,海光服务器占比56.70%。X86架构和ARM架构对比,有以下不同之处:
  • 指令集:X86采用CISC复杂指令集,而ARM是采用RISC精简指令集,这也是二者底层设计架构上根本不同之处。

  • 功耗与性能:X86追求高性能,导致功耗大,不节能,而ARM则是追求节能,低功耗,但与X86相比性能较差,因此X86架构在性能上有明显优势。

  • 应用领域:X86架构垄断PC操作系统近30年,在软硬件开发上已经形成统一标准;ARM架构主要应用在移动终端,尤其在Android系统下形成开源生态,在国产化过程中以鲲鹏为代表的ARM架构开始向服务器领域发展。

  • 64位计算:X86最初是32位指令集,后来采用AMD开发的64位指令集;ARM则基于原有的原则和架构开发了简明的64位架构,ARMV8就采用两种执行模式AArch32和AArch64,处理器在运行中可以无缝地在两种模式间切换。

  • 相互兼容性:X86系列的软件在ARM系列上通常情况无法直接运行,反之亦然。

从目前CPU的发展来看,无论是ARM还是X86,都在努力巩固自己的优势,同时积极吸取对方产品的特色,取长补短,期望有所突破。无论如何,未来的CPU肯定在朝着高性能、低功耗的方向发展。

2、国产CPU性能测试对比情况
2.1 测试环境配置情况
国产CPU服务器主流产品包括海光和鲲鹏服务器,因此在信创服务器的性能对比过程中以海光处理器和鲲鹏处理器为主,并和Intel处理器进行对比。具体的测试服务器配置如下:

测试服务器都是采用虚拟化主机的形式(虚拟机在同一numa中),没有使用物理机,CPU和内存为16c32G。其中操作系统Intel使用Redhat 8.5、海光和鲲鹏使用的是信创Kylin V10版本,数据库使用的是国产数据库GoldenDB单分片;CPU型号海光是C86 7285、鲲鹏为Kunpeng-920、Intel是C5281R,CPU主频鲲鹏服务器稍高为2600。其它配置具体见表格。

2.2 服务器基本性能测试
2.2.1 CPU性能

使用sysbench压测工具测试服务器的CPU性能,命令如下:

#sysbench cpu threads=`grep processor /proc/cpuinfo |wc -l ` --cpu-max-prime=200000 run
以上命令计算200000以内所有素数所需的时间,测试结果如下:

从CPU性能对比来看,Intel和海光的avg时间为鲲鹏ARM架构的3倍;95%占比Intel为鲲鹏的2.9倍、海光为鲲鹏的3.2倍。总体CPU性能上鲲鹏表现更优,和ARM架构的精简指令集RISC有关系。

2.2.2 内存性能

使用sysbench压测工具测试服务器的内存性能,命令如下:

#sysbench memory --memory-block-size=8k --memory-total-size=8G run
以上命令测试内存中传输8G的数据量所需时间,测试结果如下:

从测试结果上看,三类服务器差别不大,鲲鹏表现更优

2.2.3 磁盘IO性能

使用fio命令测试服务器磁盘IO性能情况,命令如下:

#fio -direct=1 -iodepth=64 -rw=randrw -ioengine=libaio -bs=16k -size=10G -numjobs=8 -runtime=600 -group_reporting -filename=fiotest.txt -name=test
"-direct=1": "以直接I/O模式运行测试,绕过系统缓存。",
"-iodepth=64": "设置队列深度为64",
"-rw=randrw": "随机读写模式。",
"-ioengine=libaio": "使用libaio作为I/O引擎。",
"-bs=16k": "设置块大小为16KB",
"-size=10G": "设置测试文件大小为10GB",
"-numjobs=8": "设置并发作业数为8",
"-runtime=600": "设置测试运行时间为600秒。",
"-group_reporting": "汇总报告结果。",
"-filename=fiotest.txt": "设置测试文件名为fiotest.txt",
"-name=test": "设置测试名称为test"
以上命令读写10G文件测试磁盘的IO性能,测试结果如下:

从测试结果看,Intel服务器的磁盘IO性能最优、鲲鹏读写性能次之、海光表现相对差些,不排除虚拟机的影响。但整体上信创服务器的IO性能相较Intel_x86架构表现要差些。

2.3 混合业务压力测试

混合业务压力测试使用sysbench脚本测试主键select、单insert和混合读写三种场景下在不同并发情况下的性能表现。

2.3.1 主键select性能对比
使用sysbench的oltp_read_only.lua进行主键查询性能测试,结果如下:

从TPS和时延指标来看,Intel服务器表现更优、海光次之、鲲鹏较差,但是海光和鲲鹏服务器在TPS表现上总体较Intel服务器还是有差距,性能上差40%。鲲鹏服务器的CPU表现更好,但是在高并发情况下CPU使用率上不去。

2.3.2 单insert性能对比
使用sysbench的oltp_insert.lua进行单insert性能测试,结果如下:

从TPS和时延指标来看,Intel服务器表现更优、海光次之、鲲鹏较差,在单insert插入场景下海光和鲲鹏服务器在TPS表现上总体较Intel服务器性能上差15%~25%

2.3.3 混合读写性能对比
使用sysbench的oltp_read_write.lua进行混合读写性能测试,结果如下:

从TPS和时延指标来看,Intel服务器表现更优、海光次之、鲲鹏较差,在混合读写压力场景下海光服务器在TPS表现上总体较Intel服务器性能上差40%、鲲鹏服务器较Intel服务器差50%。鲲鹏服务器在高并发情况下CPU使用率上不去,业务TPS也上不去。

2.3.4 性能比对总结
通过对Intel_x86处理器、海光X86处理器以及鲲鹏ARM处理器三种服务器在主键select、单insert和混合读写测试场景下的性能对比,总体表现如下:
  • CPU:鲲鹏表现稍好、Intel次之、海光稍差,但是鲲鹏服务器在高并发下CPU使用率上不去,影响TPS表现;

  • 内存:受限于测试场景,不好对比

  • TPS:Intel表现最好、海光次之、鲲鹏稍差,海光和鲲鹏处理器在TPS性能上相较Intel处理器有40%~50%性能差距

  • 时延:和TPS一样,Intel表现最好、海光次之、鲲鹏稍差

以上数据受限于测试服务器和测试场景,仅供参考。总结下来,国产服务器不论是海光X86还是鲲鹏ARM,和Intel处理器性能对比,存在明显的代差。不过信创服务器的CPU也在不断迭代发展,从金融行业以及运营商信创服务器的采购单中也能看出趋势,其中鲲鹏服务器的占比会更高些,说明国芯的性能还是受到业界肯定的。

顺便吐槽下,之前发布的一篇《国产CPU发展情况及性能测试对比》最近被人举报然后被平台删除了,不知道哪里在内容描述上触犯了某厂商。这里修改重新发出来,也是对这一块知识点的总结记录。最后声明下本号发布的内容都是平时工作学习过程中的总结整理,没有任何商业利益关系,如果有内容引起误解的,请私信本人修改或删除,不甚感谢

参考资料:

  1. CPU研究架构行业深度报告,方正证券,2021年1月

  2. 国产CPU产业格局分析

  3. 中流击水:六大国产CPU厂商分析

想起之前看过一个报道,说是鲲鹏服务器在同等性能下功耗可以降低30%。不过那是几年前的数据了,现在技术发展这么快,不知道最新的数据是多少。

功耗确实很重要,尤其在数据中心这种大规模部署的场景下。一般来说,ARM架构的芯片功耗比X86架构要低一些,鲲鹏在这方面应该更有优势。不过具体数据还得看官方的资料。

会不会和虚拟化有关?文章里提到测试环境是虚拟机,虚拟化层的损耗也可能导致CPU利用率降低。如果能用物理机测试,结果可能会更准确一些。

生态建设是一个长期过程,需要软硬件厂商共同努力。除了适配现有软件,还需要鼓励自主创新,发展基于国产服务器平台的全新应用。

现在国家大力支持信创产业,不少软件厂商都在积极适配国产服务器平台,生态建设正在逐步完善。像一些常用的数据库、中间件,都已经有国产化的版本了。

功耗除了跟架构有关,还跟制程工艺、主频等因素有关。如果能找到相同制程和主频下的海光和鲲鹏的功耗对比数据就更有说服力了。

我觉得除了软件生态,也有可能是系统调度方面的原因。高并发场景下,任务调度、上下文切换的效率都会对CPU利用率产生影响。Kylin V10对ARM架构的优化程度如何,可能也是一个影响因素。

我之前参加过一个信创大会,感觉国内信创生态发展很快,很多行业都在积极拥抱信创,这是一个好的趋势。相信未来会有更多基于国产服务器的应用出现。

关于鲲鹏CPU高并发下利用率低的问题,我感觉可能是软件生态适配的问题。毕竟ARM架构在服务器领域还是相对年轻,很多软件可能还没有针对鲲鹏的架构做充分的优化。就像以前X86刚出来的时候,也经历过类似的阵颈期。随着软件生态的完善,这个问题应该会逐渐得到解决。