今年一月份,华为正式发布了鲲鹏920数据中心高性能处理器,该处理器兼容ARM架构,采用7纳米制造,最高支持64核,主频达到2.6GHz,支持八通道DDR4、PCIe 4.0、100G RoCE网络。
![e7ebd75496ee57c350dd6e7329d4b026.png](https://i-blog.csdnimg.cn/blog_migrate/b722583df18af627575e4d6c511941ea.jpeg)
华为云基于鲲鹏920处理器的通用计算增强型KC1实例,作为市面上为数不多基于ARM架构的云服务器表现究竟如何,我们与阿里云的企业级通用型G5实例进行了全方位的对比。
一、处理器及内存性能
此次我们测试的云服务器产品分别是华为云鲲鹏通用计算增强型KC1实例以及阿里云企业级通用型G5实例各三台。所有服务器均为4核16GB内存、运行CentOS 7.4操作系统,且均位于北京。
其中华为云KC1实例采用的是华为自研的鲲鹏920处理器,主频2.6GHz;阿里云G5实例则是采用英特尔SkyLake架构的至强铂金牌8163处理器,主频2.5GHz。我们使用Unixbench对这两款服务器进行性能跑分,需要指出的是,由于两款服务器架构不同,因此相关执行指令会略有不同。
华为云KC1实例跑分前需要对Unixbench重新编译,如果直接编译会报错,以下三条指令是专门针对ARM架构的服务器:
sed -i 's/-mtune=native//' Makefilesed -i 's/-march=native//' Makefilesed -i 's/$field eq "bogomips"/$field eq "bogomips" or $field eq "BogoMIPS" /g' Run
修改后就可以使用Unixbench对这两种服务器进行跑分。
CPU多核整型跑分指令:
./Run -c 4 dhry2reg
CPU多核浮点型跑分指令:
./Run -c 4 whetstone
这里,我们对华为云KC1实例和阿里云G5实例分别进行六次跑分,结果如下:
![a34dc6eb1cd18250ffdf3a89c8682bb1.png](https://i-blog.csdnimg.cn/blog_migrate/fb455b1f1f0a79d61f7b228c0deecc7b.jpeg)
通过平均得分的对比我们发现,华为云KC1实例多核整型得分远高于阿里云的G5实例,多核浮点型得分两者不相上下。由此我们可以看到鲲鹏920处理器在性能表现上与x86架构处理器的差距不大,而且在整型计算上的优势更加明显,即可以更好应对基因测序、图像渲染、大数据等大规模高强度的数据处理任务。
![a6d0fe7cb197d42247540355bbe3d35c.png](https://i-blog.csdnimg.cn/blog_migrate/f9417028b3335dc53159cdfdfdd0fa3a.jpeg)
再来看二者内存性能的表现。内存方面,不同厂家对内存选取也不同,出于节省成本的考虑,云服务器厂商往往很少公布内存的频率和型号,这里我们通过stream工具进行测试。
stream是业界广为流行的综合性内存带宽实际性能测量工具之一,支持Copy、Scale、Add、Triad四种操作。
Copy它先访问一个内存单元读出其中的值,再将值写入到另一个内存单元。Scale操作先从内存单元读出其中的值,作一个乘法运算,再将结果写入到另一个内存单元。Add操作先从内存单元读出两个值,做加法运算,再将结果写入到另一个内存单元。Triad的表示将Copy、Scale、Add三种操作组合起来进行测试。
对应的四种操作如下:
- 复制(Copy) a(i) = b(i)
- 尺度变换(Scale) a(i) = q*b(i)
- 矢量求和(Add) a(i) = b(i) + c(i)
- 复合矢量求和(Triad) a(i) = b(i) + q*c(i)
测试前,应该先解压编译stream文件,具体编译代码如下:
gcc -O3 -fopenmp -DSTREAM_ARRAY_SIZE=64000000 -DNTIMES=10 stream.c -o stream
这里的内存测试我们同样对测试服务器进行十次测试取平均值,具体测试数据如下:
![2e84ee2211aeef6d96265c934b3fe73b.png](https://i-blog.csdnimg.cn/blog_migrate/b71037e97c7938cb24d7a39657205490.jpeg)
*上述数据单位均为MB/s
通过平均值的对比我们看到,相同配置下,华为云KC1实例所使用的内存在性能上是优于阿里云G5实例的。这样快速的数据传输也为服务器的数据处理能力提供了更好的保障。
![391d03418904dd0e016d0e3bf75440e3.png](https://i-blog.csdnimg.cn/blog_migrate/007b2e8e635c7083a0372c6c37586eea.jpeg)
此外,内存时延也对整个服务器的数据处理能力有很大的影响。这里的内存时延指的是三级缓存的时延。
现阶段的处理器一般都有三级缓存,处理器在取数据的时候会优先从最靠近的缓存开始,取不到再去内存取数据。越靠近处理器,取数据的速度越快,通过LMBench等工具我们能精准的刻画这种读取的延时,也就是我们说的内存时延,不同缓存的时延呈现的是指数级增长,在对应的缓存中,时延是稳定的。
内存的时延都是以纳秒为单位,而我们实际业务的需求中往往都是以毫秒为单位,通过LMBench,我们获得了两款服务器的时延情况:
![6ec9dc8e2b9882a8a487b9f40d3f8aa9.png](https://i-blog.csdnimg.cn/blog_migrate/e6d6360d9d425f29444549bf15bde62f.jpeg)
其中,华为云KC1内存时延平均值为100.9纳秒,标准差为0.74;阿里云G5内存时延平均值为125.1纳秒,标准差为1.20。通过这组数据我们看到,华为云KC1的内存时延水平更低,也更稳定。相比于阿里云G5,在时间上有近20%的压缩,能更好的为处理器提供稳定高速的数据处理能力。
我们看到,作为新品的华为云鲲鹏云服务器KC1在处理器内存的表现上甚至已经能超越同层次的X86服务器。相信对于X86阵营的云服务厂商来讲,现在是时候正视鲲鹏云服务器这个强大的对手了。
二、网络性能
一般而言,各家云服务厂商允许用户在同一机房申请多台服务器搭建各种服务,这种服务被称之为虚拟私有云,是用户可以在这些服务器之间自由配置IP地址段、子网、安全组等子服务,也可以申请弹性带宽和弹性IP搭建业务系统。
这里我们首先使用netperf工具对这两家服务器运营商内网间TCP带宽性能进行测试。这里我们需要在各个主机中开启2台陪练机,测试机与2台陪练机均安装netperf,测试机做Server,陪练机做Client负责打流。
测试端口令如下:
netserver -p port &(7001、7002、7003、7004端口为测试端口)
客户端口令如下:
netperf -H serverip -p port -t TCP_STREAM -l 120 -- -m 1440 & (serverip为测试机内网IP,port为对应测试接口)
然后通过sar命令查看打流的数据的平均值,测试结果如下:
![572b50f0163ddb448645a345202e37a4.png](https://i-blog.csdnimg.cn/blog_migrate/20c15cea199b1ea921c084cb68d77b20.jpeg)
测试结果来看,华为云KC1实例内网带宽在49.36万KB/s上下,阿里云G5实例内网带宽在18.80万KB/s上下。而阿里云G5实例内网带宽最高为20Gbps(16核64GB),4核16GB版本峰值速度约为1.5Gbps,基本上与测试水平相当。但整体来看,华为云KC1内网带宽更具优势,适合数据量比较大的多台服务器组成的内网服务器集群。
当然,除了内网的带宽,时延也是一个重要的参数。延迟决定系统每秒处理的最大请求数,而带宽决定了可支撑的最大负荷。
qperf和iperf/netperf一样可以评测两个节点之间的带宽和延时。可以在测试tcp/ip协议和RDMA传输。不过相比netperf和iperf,支持RDMA是qperf工具的独有特性。在CentOS中安装qperf比较简单,直接使用yum工具就能直接安装。
通过qperf测试服务器的延时和带宽,需要两台服务器一台做服务端另一台做客户单打流。其中服务端直接运行qperf,无需任何参数。
服务器端直接运行qperf无需任何参数,默认就会开启19765端口。客户端运行获取带宽、延时情况,运行过程中不需要指定端口号,只要指定主机名或者IP地址即可。这里我们查看服务端与客户端的时延情况,并进行五次测试取平均值,测试结果如下:
我们看到华为云KC1实例内网时延平均为35.92微秒,而阿里云G5实例平均时延为41.70微秒,华为云的内网时延更短,这就让内网间数据交换更加迅速快捷,相比于阿里云G5服务器有近15%的提升。
在内网的带宽和时延上,我们看到华为云KC1相比于阿里云G5同配置更具优势,这就为大规模的内网服务器集群建设带来了可能。
三、存储表现与价格
现阶段不同的云服务器厂商会提供不同的存储解决方案以应对各种使用场景,这种存储解决方案往往称之为云硬盘,它为ECS、BMS等计算服务提供持久性块存储的服务,通过数据冗余和缓存加速等多项技术,提供高可用性和持久性,以及稳定的低时延性能。用户可以对云硬盘做格式化、创建文件系统等操作,并对数据做持久化存储。
现阶段云服务厂商基本上都会提供三种存储解决方案,分别是普通云盘、高速云盘、SSD云盘。这里我们通过挂载不同种类的云盘对测试机的存储能力进行测试。
我们这次针对两家厂商的超高IO云盘/SSD盘进行测试,测试所使用的工具为fio,测试项目包括随机读写IOPS和顺序读写吞吐量,测试磁盘大小均为1000GB。
![62c0445d3b36da2eb349baf15dc3c458.png](https://i-blog.csdnimg.cn/blog_migrate/656344b03c37a32baf72f8baeba845d4.jpeg)
在4K随机读写测试中,华为云超高IO云盘达到33000 IOPS,顺序读写吞吐量均达到了350MB/s。相比于阿里云的云盘速度上高出不少。
从SSD云盘对比上来看华为云更具领先优势,阿里云SSD云盘性能尚可。前段时间华为云发布了云存储All-Flash战略,我们也期待华为云能在存储上的持续突破。
价格方面,阿里云G5服务器4核16GB当前报价为每年4732.8元,除了4核16GB配置,还有最高64核可选。而华为云KC1服务器目前处于公测阶段,最高支持60核,测试期间用户可以免费申请使用。
总结
现阶段多数云服务厂商均以X86架构的服务器为主,客户对ARM架构的服务器大多持观望态度。但通过本次测评我们发现,鲲鹏云服务器在计算、网络、存储等多个方面已经成熟,且会在如大数据、基因测序等整型计算场景下较x86更具优势,相信鲲鹏新算力的加入,可以为多样应用提供全新的算力选择。
此前,笔者与同行交流探讨过一个问题,在服务器市场上,英特尔应该惧怕AMD吗?显然无论是英特尔也好,AMD也罢,他们都是X86阵营的服务器制造商,而能威胁到X86架构服务器的,恰恰是来自体系之外——ARM。Redis创始人Salvatore Sanfilippo此前也表示,他正在将ARM作为Redis的主要架构。而微软也为Windows 10应用开发针对ARM的支持,总之,ARM的前景未来可期。
当然,ARM服务器成为云端主流还有很长一段路要走,而基于鲲鹏处理器的华为云鲲鹏全系列云服务,向产业释放鲲鹏新算力的同时,也让我们看到华为在这一领域坚定的决心。