https://zhuanlan.zhihu.com/p/585350070
自从今年龙芯3C5000+7A2000面世以来,在服务器市场已经具备初步的竞争力。在11月16日南京的会议中,龙芯发布了几十款服务器与台式机产品。一直以来,服务器CPU给人的感觉比较高端,价格也要贵好几倍,一个INTEL的新一代服务器(例如8380)处理器要9000美元。占领服务器市场可以获得更高的利润,也有助于竖立更好的品牌形象。在没有海光之前,AMD 在中国基本没有服务器的市场份额,海光获得信创资格后,AMD名正言顺的在服务器市场攻城略地。
服务器市场目前还是华为、海光比较历害。华为是全栈的产品,你买华为云平台,主控端得用鲲鹏处理器,买华为的存储,也是鲲鹏处理器,华为有高斯数据库(有MPP版本,也有DBMS版本),捎带着也用鲲鹏,买华为产品,华为不让用别家的CPU搞信创,当然鲲鹏自己性能也争气。海光就没什么可说的,是intel的平替,基本上不要适配,海光单核强,核数多,在信创市场上,基本是性能天花板。靠山吃山,鲲鹏背靠华为,飞腾背靠中国电子,海光兆芯靠X86帝国。龙芯主要是背后没有大树,也是不容易,但手里有枪!
但龙芯未必不能脱围,服务器CPU是跑什么的?实际上服务器的生态比桌面单纯的多。绝大多数行业服务器的任务比较单纯,一般就是WEB服务器,应用服务器(JAVA最多),数据库服务器。这就意味着一款服务器,只要能跑apache,niginx等WEB服务器,能运行JVM,能跑起来数据库,基本上就满足的要求,不需要ADOBE 全家桶,不需要新版本的QQ,不需要AUTOCAD之类的工业软件,适配要容易的多。加上目前的服务器软件多数是开源软件,有GCC,JVM就能编译出来。服务器的CPU频率也相对低,2-3GHZ的情况比较多。龙芯如果能够深耕一下,把几款软件调好、加上3C6000性能上再有一点优势、再搞一点“可信计算(TPM)”之类的花活,应该能够吃下一些服务器的市场。
我有一块3A5000+7A2000的板子,做了几个小小的测试,试图反映这一代龙芯处理器在服务器市场的潜力。这次主要主要是三个方面。(1)SPECJvm2008(JAVA性能) (2) nginx(WEB服务器性能) (3) mariaDB (数据库性能)。这三方面性能,分别对应普通企业应用的三项核心角色(WEB服务器,应用服务器,数据库服务器),不愿看完的先说下结论,龙芯的底子不错,在这几个场景可以与同频的intel 三代酷睿核心相比,部分项目亮眼,达到当代处理器水平。主要问题是,由于架构比较新,很多软件需要花精力调一下。
在开始前,先强调一下,计算机系统的性能评价是很复杂的,看一个最终得分是不够的。常常两个处理器同样分数,里面的子项差别也很大,还是要针对自己的应用作评估,拿自已目标应用去测更好;其次,当代企业应用的瓶颈一般不在CPU,常常在IO,企业不算科学题目,就增删改查数据,所以我下面的mariaDB的成绩更多的是反应了整个平台的性能,可能那块M2盘作用比关键。以下测试算是不严谨的,完全没有调参(不调参可能更贴近用户),各平台之前对比也没有在版本、系统方面完全调成一致,大家有个大概映像就行。
龙芯电脑配置 3A5000(2.5G)/2*8G (光威ddr3200)/M2 256G(PICE3.0 铨兴)
(1)SPECJvm2008 也是SPEC公司的产品,虽然不上cpu2006,cpu2017名气大,但好像在同类当中,又有最有名气的。有编译,加密,计算,数据库等项目。虽然是2008版本,但其实也合适,大量的企业都在使用jdk1.8,刚好用这么老的测试软件。要不是oralce上赶着,大家都没有动力换新的JDK。这个玩意跑一遍也好几个小时,用jdk.18测SPECJVM2008,要稍改一下代码,否则可能hang住,网上有解决方案(SPECjvm2008测试过程出现startup.compiler.sunflow堵塞一直卡住问题解决方法 (yunfuhelp.com))。
测试很简单: java -jar SPECjvm2008.jar -ikv
如果测单线程,可以加个参数 : java -jar SPECjvm2008.jar -ikv -bt 1
单线程测试,3A5000(42.15 分),我在一台三代酷睿的平台(E5-2640V2/4*16G DDR1600/M2 1T PCIE3.0/win10),这个酷睿最高运行到2.5G,频率与龙芯一样,单线程得分(42.33),这两个基本打平了。
龙芯3A5000单核 SPECJVM E5 2640V2(三代酷睿)单线程SPECJVM不加单线程参数,测四个核心的,3A5000的分数是122 Ops/m。这大概是什么水平?
我们找一个参照机,找一台i5四代平台(I5 4590/8G/SanDisk SSD 128G/win10)。这个测试其实与内存与硬盘关系不大,将就找一台机器就行。将这个i5的腿打折,运行在2.5GHz 得分136,看来龙芯还是比不上同频Haswell i5,继续降频,把i5降到2.3G,126 Ops/m,降到2.2G,为120 Ops/m。这样看来,3A5000运行SPECJVM的工作负载,大约相当于2.2-2.3GHZ的 四代i5。这个性能其实还可以,对付信创应用应该是够了。我今年6月才换的12代的笔电,之前一直使1.7G的四代i3笔电,也没觉得多慢。
龙芯3A5000四核心 i5 4590(2.5GHz) i5 4590(2.2Ghz)曾经在B站上看过一个视频,一个UP主用3A3000测试SPECJVM,与一个i5三代的笔记本U对比,好像最高也是2.5G,一对比,当时i5比3A3000很多项目快五六倍,UP主嘟嘟嚷嚷的,情绪低落。斗转星移,岁月更替,三年之后,3A5000能平i5三代了,令人感慨,真是雄关漫道,沧海桑田。
(2) 下面测试Nginx: nginx是主流的WEB服务器。测试nginx使用的是phoronix_test_suite。phoronix_test_suite 是一个开放的测试工具,有很多测试集,主要是可以与上传的不同平台相比(https://openbenchmarking.org/),可玩性很强。
测试命令是phoronix_test_suite benchmark nginx,如果是X86,直接就可以完成。龙芯由于新架构,要自行下载一个LuaJIT替代安装包里wrk的LuaJIT,此外,make 的时候,还有一个dirent.h相关的报错,网上查,编译nginx报这个正常,修改install.sh,让它跳过这个错,最终是能测了,如果大家有兴趣,专门开贴说怎么鼓捣。回到测试,这个测试是用一个wrk的工具去并发访问nginx。
测了一下,结果居然比较给力,3A5000在20个连接(成绩43953 request per second)、100个连接(成绩53780),200个连接(成绩52554)的情况下,都很凶猛,居然比APPLE M1,i7-10700T(29078 ,34473,34446)都要高。是否是3A5000适合做nginx服务?后面再考证一下,看上去数据很好。
nginx 测试20个连接 nginx 测试100、200个连接 nginx得分天梯图(20 Connections)(3) mariaDB就是著名的mysql的后继者,MySQL让oralce收购后,作者又创建了mariaDB,现在Linux中新版本装数据库默认装这个,用法上基本与mysql一样。Msqlslap是一个自带的benchmark程序。这个编译也有点问题,下载config.sub,config.guess的最新版本后通过。分别测试了8个客户端(987),32个客户端(644),256个客户端(137 qps)。在网站上找了类似的处理器相比,一个是i3-9100f平台,(https://openbenchmarking.org/result/1907027-HV-INTELI39113),这个平台也是4核心skyflake/8GB/M2 PCIE 3.0 配置一样,成绩分别是8个客户端(948),32个客户端(497),256个客户端(76). 还不如3A5000!当然,也有高的,例如,一套i5-12600K https://openbenchmarking.org/result/2202163-PTS-12600KMA58 成绩是2879,2122,801
3A5000 (8 Clients) 3A5000 (32 Clients)最后总结一下。
(1)性能比我想像的要好,SPECJVM 单核心打平了同频的三代酷睿,这个性能已经可以用了,3A5000对龙芯确实是重要的产品,跨过了“性能可用”的门槛。nginx性能亮眼,需要进一步分析。mariaDB超过了i3九代,这也令人惊讶。
(2)我测试一些别的项目,有好有坏。这不希奇,对通用CPU,当然有的成绩好,有的成绩坏。有的是编译选项问题,有的是指令集问题。现阶段,毕竟国产处理器现在要解决信创过程中的各项问题,各个软件的支持还是比不了intel多年经营。
(3)测试时,很多项目因为架构不支持,需要trouble Shooting,但目前GCC支持LongArch了,这些问题都不难解决,过一段时间新版本的测试应该能直接测