轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能
一、评测背景
本文是继之前文章:《华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 Geekbench 深度测评华为云云耀云服务器L实例》与 华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例后,继续探讨华为云的创新产品【华为云云耀云服务器L实例】,为读者提供全面的评测信息,本篇文章重点是测试其【华为云云耀云服务器L实例】的磁盘 I/O 性能。我们仍然选取了对比机器,也就是友商的轻量级应用服务器 lighthouse,经过使用 fio 的详细测试,我们将对华为云的最新云耀云服务器L实例的CPU处理器性能进行严格测试和分析,以帮助你更加清晰的认识华为云的最新云耀云服务器L实例,以及帮助你更好的在众多繁杂的服务器中进行选择判断。
二、评测声明
本人任何测试其云计算或者其他商品,都站在如下声明立场
尽管本文是在参与华为云云耀云服务器L实例评测活动的背景下编写的,但是本博主是站在一个中立的角度来进行评测,不存在因为是活动文上来就无脑吹,这有背征文的目的以及我的个人初衷。
三、被评测服务器参数及准备
3.1 被评测服务器基本参数
华为云云耀云服务器L实例现阶段提供2核2G
、2核4G
、2核8G
的 3 种 CPU 和内存规格,不同 CPU 和内存规格与系统盘、峰值带宽和流量包组合共有 6 种实例规格。这里选择的友商测试机为轻量应用服务器 lighthouse,该友商的轻量型应用服务器与华为云云耀云服务器L实例类似,都提供不同的应用场景,不通过的镜像支持以及规格,可以说是相互的对标产品。
本测试使用的华为云云耀云服务器L实例与友商的轻量应用服务器 lighthouse均位于广州区域,且配置均为2核2G
,配置参数表格为:
规格配置 | 华为云云耀云服务器L实例 | 友商的轻量应用服务器 lighthouse |
---|---|---|
核心数 | 2核 | 2核 |
内存 | 2G | 2G |
操作系统 | CentOS 7.6 | CentOS 7.6 |
区域 | 广州 | 广州 |
3.2 测试机采购
3.2.1 华为云云耀云服务器L实例
因为本文重点是对华为云云耀云服务器L实例进行处理器层面的评测,由于篇幅有限,此处步骤略过,对于如何采购华为云云耀云服务器L实例具体步骤细节,参考我之前的博文中的第三节即可:华为云云耀云服务器L实例评测 | 从零开始:云耀云服务器L实例的全面使用解析指南
购买后服务器规格如下:
在这里插入图片描述3.2.2 友商的轻量应用服务器 lighthouse
对比测试机采购步骤略过,因为不是今天的主角,直接在下面贴出购买后的截图
在这里插入图片描述四、使用 fio 测试磁盘 I/O 性能
"fio" 是一个广泛用于评估磁盘 I/O 性能的工具,它支持多达19种不同的 I/O 引擎,包括但不限于:sync、mmap、libaio、posixaio、SG v3、splice、null、network、syslet、guasi、solarisaio等。fio 不断更新,目前最新版本为 v3.19,你可以在其官方网站 "fio" 上获取相关信息。
使用 fio 进行磁盘压力测试有两种主要方法。一种是通过命令行参数进行配置;另一种是通过读取配置文件来设置测试参数。这两种方法在功能上差异不大,但后者允许你结合使用诸如 sh 和 screen 等工具,以便长时间运行测试。
为了演示如何使用 fio 我们这里直接使用华为云云耀云服务器L实例进行演示
4.1 fio 安装
本文以 华为云云耀云服务器L实例评测 CentOS 7.6 操作系统的云主机为例,可以直接yum
安装测试工具 fio。
[root@hcss-ecs-d51e ~]# yum install -y libaio
[root@hcss-ecs-d51e ~]# yum install -y libaio-devel
[root@hcss-ecs-d51e ~]# yum install -y fio
出现 Complete! 后,确认安装完成,如下图:
在这里插入图片描述4.2 fio 常用测试场景与测试方法
4.2.1 测试场景
-
测试延迟
队列深度为1,bs设置为4k,也就是模拟单个队列读写的延迟测试
-
吞吐
队列深度为32,bs设置为128k,测试最大能力去跑满整个磁盘带宽
-
iops
队列深度为32,bs设置为4k,要在最短的时间内多去读磁盘 小文件通常测试随机读写,大文件通常测试顺序读写。
常见测试场景参照(重要):
-
顺序读写(吞吐量,常用单位为 MB/s):文件在硬盘上存储位置是连续的。
适用场景:大文件拷贝(比如视频音乐)。速度即使很高,对数据库性能也没有参考价值。
-
4K 随机读写(IOPS,常用单位为次):在硬盘上随机位置读写数据,每次 4KB。
适用场景:操作系统运行、软件运行、数据库。
4.2.2 测试方法
fio 的测试方法有两种,一种是直接使用命令行,另外一种是可以使用测试配置文件,区别是使用测试配置文件可以定期进行执行测试。
注意(非常重要):
-
请不要在系统盘上进行 fio 测试,避免损坏系统重要文件。 -
为避免底层文件系统元数据损坏导致数据损坏,请不要在业务数据盘上进行测试。 -
请确保 /etc/fstab
文件配置项中没有被测硬盘的挂载配置,否则将导致云服务器启动失败。 -
测试硬盘性能时,建议直接测试裸数据盘(如 /dev/vdb
)。 -
测试文件系统性能时,推荐指定具体文件测试(如 /data/file
)。 -
fio 测试建议在空闲的、未保存重要数据的磁盘上进行,并在测试完成后重新创建文件系统。
(1)使用命令行测试
filename
需要指定设备中的具体磁盘盘符,如下以/dev/sda
为例:
顺序读 BW
fio -name=Seq_Read_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=read -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
顺序写 BW
fio -name=Seq_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=write -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
随机读 IOPS
fio -name=Rand_Read_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
随机写 IOPS
fio -name=Rand_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=4k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
混合读写
fio -name=Read_Write_IOPS_Test -group_reporting -direct=1 -iodepth=128 -rw=randrw -rwmixread=70 -refill_buffers -norandommap -randrepeat=0 -ioengine=libaio -bs=4k -size=10G -numjobs=1 -runtime=600 -ioscheduler=noop -filename=/dev/sda
写吞吐量
fio -name=Write_BandWidth_Test -group_reporting -direct=1 -iodepth=32 -rw=write -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=1024k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
读吞吐量
fio -name=Read_BandWidth_Test -group_reporting -direct=1 -iodepth=32 -rw=read -ioengine=libaio -refill_buffers -norandommap -randrepeat=0 -bs=1024k -size=10G -numjobs=1 -runtime=600 -filename=/dev/sda
(2)使用配置文件进行测试
下面的是示例的测试文件,可以直接创建一个测试文件叫做:fio.conf
# fio.conf
[global]
ioengine=libaio
iodepth=128
direct=0
thread=1
numjobs=16
norandommap=1
randrepeat=0
runtime=60
ramp_time=6
size=1g
directory=/your/path
[read4k-rand]
stonewall
group_reporting
bs=4k
rw=randread
[read64k-seq]
stonewall
group_reporting
bs=64k
rw=read
[write4k-rand]
stonewall
group_reporting
bs=4k
rw=randwrite
[write64k-seq]
stonewall
group_reporting
bs=64k
rw=write
文件保存好后,直接使用下面的命令进行运行:
fio fio.conf
4.2.3 各运行参数说明
-
filename: 指定文件 (设备) 的名称。可以通过冒号分割同时指定多个文件,如 filename=/dev/sda:/dev/sdb。 -
directory: 设置 filename 的路径前缀。在后面的基准测试中,采用这种方式来指定设备。 -
name: 指定 job 的名字,在命令行中表示新启动一个 job。 -
direct: bool 类型,默认为 0, 如果设置成 1,表示不使用 io buffer。 -
ioengine: I/O 引擎,现在 fio 支持 19 种 ioengine。默认值是 sync 同步阻塞 I/O,libaio 是 Linux 的 native 异步 I/O。关于同步异步,阻塞和非阻塞模型可以参考文章 使用异步 I/O 大大提高应用程序的性能”。 -
iodepth: 如果 ioengine 采用异步方式,该参数表示一批提交保持的 io 单元数。该参数可参考文章“Fio 压测工具和 io 队列深度理解和误区”。 -
rw: I/O 模式,随机读写,顺序读写等等。可选值:read,write,randread,randwrite,rw,randrw。 -
bs: I/O block 大小,默认是 4k。测试顺序读写时可以调大。 -
size: 指定 job 处理的文件的大小。 -
numjobs: 指定 job 的克隆数(线程)。 -
time_based: 如果在 runtime 指定的时间还没到时文件就被读写完成,将继续重复知道 runtime 时间结束。 -
runtime: 指定在多少秒后停止进程。如果未指定该参数,fio 将执行至指定的文件读写完全完成。 -
group_reporting: 当同时指定了 numjobs 了时,输出结果按组显示。
如果是配置文件,配置文件属于 ini 格式的,即有区块概念,区块下通过“=”设置键值对。
4.2 在华为云云耀云服务器L实例运行 fio 测试
下面的说明是使用 fio 在华为云云耀云服务器L实例上进行测试,因为篇幅有限,下面只举例(图片)顺序读 IOPS。
在这里插入图片描述-
bw:磁盘的吞吐量,这个是顺序读写考察的重点 -
iops:磁盘的每秒读写次数,这个是随机读写考察的重点
在上述测试过程中,顺序读测试结果的 吞吐量 BW 是104MB/s
。
4.3 友商的轻量应用服务器 lighthouse 运行 fio 测试
在友商的轻量应用服务器 lighthouse 运行 fio 测试 在上述 4.2 节中,华为云云耀云服务器L实例上运行 fio 测试步骤里已经详细介绍如何使用 fio 以及相关的细节介绍,这里节约篇幅省略中间过程,直接给出在友商的轻量应用服务器 lighthouse 运行 fio 的结果:
以执行顺序读为例:
在这里插入图片描述五、最终测试比对结果
这里和之前使用 Geekbench、STREAM测试的时候一样,废话不多,直接上 fio 的最终结果:
fio 硬盘读写性能测试 | 顺序读(MB/s) | 顺序写(MB/s) | 随机读(IOPS) | 随机写(IOPS) |
---|---|---|---|---|
华为云云耀云服务器L实例 | 104 | 90.9 | 5101 | 5122 |
友商的轻量应用服务器 lighthouse | 23.7 | 23.6 | 6050 | 6064 |
从上表中可以看出,同样是测试文件大小 1G 的情况下,华为云云耀云服务器L实例的顺序读与顺序写的速度要远高于友商轻量级应用服务器,但是在随机读与随机写的测试中,友商轻量级应用服务器的 IOPS 要略高于华为云云耀云服务器L实例,但是相差没有顺序读写那么夸张。
这也就说明,如果你是读写大文件,那么华为云云耀云服务器L实例的速度会远高于友商产品,而数据库或者应用在华为云云耀云服务器L实例上速率略低于友商竞品。
六、文末总结
在本文中,我们对被评测服务器的硬盘 I/O 性能进行了全面的评测和比对。在本文的重点部分,我们使用 fio 工具来测试这两款服务器的硬盘读取 I/O 性能。我们介绍了 fio 工具的安装过程、使用方法与相关详细运行参数报告进行了详细说明。并分别在两种服务器上运行了 fio 测试,以深入评估它们的在硬盘上的 I/O 性能。
过本文的评测和比对,可以帮助读者更好地了解这两款服务器的内存性能表现,为他们做出明智的决策提供有价值的信息。无论是在企业环境还是个人应用中,优化内存性能都是提高整体系统性能的关键一步。
- 点赞
- 收藏
- 关注作者
评论(0)