云主机性能测试方案
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云主机性能测试方案相关的知识,希望对你有一定的参考价值。
目录
文章目录
基础性能测试
计算性能 —— Super_Pi
使用 Linux 下的 bc 计算器程序,通过反正切函数计算 5000 位圆周率(Super_Pi)的 CPU 耗时,来对云主机的单核计算性能和多核计算性能分别进行测试。
time echo "scale=5000; 4*a(1)" | bc -l -q
由于 Intel Ice Lake CPU所具备的超线程技术,无论阿里云还是 AWS,单核 Super_Pi 的性能都要好于多核 Super_Pi。
计算性能 —— CPU 调度延时
CPU 对计算指令的响应时间,也会对计算性能产生十分大的影响,如果调度延时高,会额外增加 CPU 的负载。
因此在本次测试中,采用 schbench 进行测试。通过测试结果来看,阿里云和 AWS 的云主机 CPU 调度延时都处于微秒级别。
计算性能 —— 内存带宽
所有的 CPU 处理任务,基本上都要通过内存进行缓存,因此内存带宽的大小,基本上也就代表着主机可以处理数据的最大总线带宽。
在这里我们通过 stream 来对云主机的内存带宽进行测试。在 stream “copy”、“scale”、“add”、“Triad” 四种不同计算模式下,阿里云的内存带宽分别可以达到 57GB/s、58GB/s、65GB/s、64GB/s。而 AWS 主机的内存带宽为55.9GB/s、55.9GB/s、62GB/s、62GB/s。
计算性能 —— 内存时延
这里使用 mlc 来对云主机的内存时延性能进行测试。
阿里云的内存时延可以达到 86.5 纳秒,而 AWS 的内存时延达到了 99.8 纳秒。
存储性能 —— 云盘读/写 IOPS
对云盘读/写 IOPS 的测试,实际上就是对 DPU 数据处理性能最好的考验了。
在存储性能测试中,采用的是 Linux 下的经典测试工具 fio。首先测试的是两个云主机在挂载高性能云盘后的云盘读/写 IOPS 性能。
阿里云的读/写 IOPS 均可以达到 57k 以上,而 AWS 的为 40k 左右。
存储性能 —— 云盘读/写带宽
云平台必然不会为单台云主机分配上所有的云盘带宽资源。因此,如何充分满足用户的存储带宽使用需求,有可以将整理存储带宽合理分配,就成为一个考验云平台分配能力的工作了。
从测试结果可以看出,阿里云的读/写带宽均在 684MiB/s 左右,AWS 的读/写带宽在 766MiB/s 左右(1MiB = 1024KiB/s)。
存储性能 —— 云盘读/写时延
在带宽资源受云平台控制的前提下,想要更好地了解存储性能,就需要对云盘的时延进行一下测试了。
在这里我们同样使用 fio 对云盘的读/写时延进行了测试。
从测试结果上看,阿里云读平均时延为 190.42 微秒,写平均时延为 106.69 微秒。AWS 云盘的读平均时延为 433.03 微秒,写平均时延为 473.39 微秒。
网络性能 —— 传输速率(PPS)
在本项测试中,我们在两台云主机上分别安装 netperf 工具,并在 Client 端发送小包进行压测,并在 Server 端通过 sar 监控网络流量。
从测试结果可以看出,阿里云神龙网络传输速率在 1.6M pps 左右,AWS Nitro 网络传输速率在 1.2M pps 左右,略低于阿里云神龙。
网络性能 —— 网络带宽
网络带宽同存储带宽一样,除了是对这两款云主机专用芯片的考验之外,也一样在考量着云平台的网络资源分配。
在本项测试中,我们在两台云主机上分别安装 netperf 工具,并在 Client 端发送大包进行压测,并在 Server 端通过 sar 监控网络流量。
网络性能 —— 单向时延
接下来我们通过 sockperf 这个基于 Socket API 的网络基准测试实用程序,对两款云主机的网络数据包转发时延进行测试。在本次测试中,在压力为 100K UDP pps 的低负载情况下,对单向时延进行测试。
从平均时延的测试结果来看,AWS Nitro 单向时延为 23.185 微秒,而阿里云神龙以 30.448 微秒略微落后。
网络性能 —— Ping 时延
除了数据包转发时延之外,还需要对网络连接建立时的时延进行了解,在这项测试中,我们采用的是最常见的测试命令 ping。
从测试结果来看,阿里云神龙的 ping 报文 RTT 时延在 0.05 毫秒左右,而 AWS Nitro 的 ping 报文 RTT 时延略长,在 0.1 毫秒左右。
应用性能测试
nginx
在本次测试中,我们通过 Nginx 的 wrk 压测命令,始终保持 1000 连接访问请求,来对两款云主机的 Web 长、短链接应用响应速率进行测试。短链接测试中设置连接建立数据传输完毕后将连接断开,长链接测试中设置链接测试结束前保持,测试结果如下:
在本次测试中,阿里云神龙的 Nginx 短连接响应速率达到 10 万 QPS,长连接更可以达到 83 万 QPS 左右。而 AWS Nitro Nginx 短连接响应速率可以达到 19 万 QPS,长连接可以达到 70 万 QPS 左右。
mysql
和 Web 应用请求需要适当进行管理控制不同,对于数据库的检索调用,自然是性能越高越好。在本次测试中,我们通过跨平台基准测试工具 sysbench,对阿里云神龙与 AWS Nitro 的数据库读写性能进行了测试。
在本次测试中,我们设置建立了 100 万规模的测试数据,测试结果如下:
从测试结果可以看出,阿里云神龙的 MySQL 数据库读/写 QPS 分别为 94733 和 50318。AWS Nitro 的 QPS 分别为 85389 和 27509。
Redis
Redis 具有基于内存部署、高并发读写、可分布式运行等特色,也在受到广泛青睐。对于神龙和 Nitro 这种高性能云主机而言,Redis 测试可以更好地对其应用处理能力进行体验。
下面使用 Redis 自带的性能测试工具 redis-benchmark 测试这两款云主机在 Set 和 Get 下的成绩,测试结果如下。
大数据性能测试 TPCx-HS
TPCx-HS 是一个大数据系统基准测试。TPCx HS 同时考虑硬件和软件方面,包括 Hadoop 运行时、Hadoop 文件系统 API 兼容系统和 MapReduce 层。TPCx-HS 包含数据生成、数据排序、数据验证 3 个阶段。在本次测试中,我们生成了 1TB 数据来完成 TPCx-HS 测试。
介于 1TB 的数据规模以及 Hadoop 测试的部署需要,在本项测试中,分别采用了 4 台基于 Intel Ice Lake CPU,32 vCPU、128G 内存的云主机。阿里云 ecs.g7.8xlarge vs. AWS m6i.8xlarge,测试结果如下:
从测试结果可以看出,阿里云神龙云主机在数据生成、数据排序、数据验证 3 个阶段的测试成绩分别为 16 分 07 秒、29 分 03 秒以及 5 分 57 秒。AWS Nitro 的测试成绩则为 21 分 23 秒、35 分 13 秒以及 8 分 08 秒。
高性能计算测试
数值天气预报计算
在数值天气预报计算中,由于要产生超高强度的计算,在数值天气预报计算中,我们采用的是基于 Intel 8369B CPU 具备 2.9GHZ 主频、64 物理核 / 128 vCPU、256GB 内存的阿里云 ecs.sccc7.32xlarge vs. 基于 Intel 8375C CPU 具备 2.90GHz 主频、64 物理核 / 128vCPU、512GB 内存的 AWS m6i.32xlarge,测试结果如下:
从测试结果可以看出,阿里云神龙用时 195.46 秒就完成了数值天气预报计算工作,而 AWS Nitro 的计算用时为 225.59 秒,用时长于阿里云神龙云主机。
以上是关于云主机性能测试方案的主要内容,如果未能解决你的问题,请参考以下文章
专访阿里云虚拟化技术总监研究员张献涛:“神龙”开启云计算新征程
性能提升40%,阿里云神龙大数据加速引擎获TPCx-BB世界排名第一