华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能

news/2024/12/22 19:34:58/

在这里插入图片描述

本文收录在专栏:#云计算入门与实践 - 华为云 专栏中,本系列博文还在更新中

相关华为云云耀云服务器L实例评测文章列表如下:

  • 华为云云耀云服务器L实例评测 | 从零开始:云耀云服务器L实例的全面使用解析指南
  • 华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 Geekbench 深度测评华为云云耀云服务器L实例的处理器性能
  • 华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例的内存性能
    华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 fio 深度测评华为云云耀云服务器L实例的磁盘性能
  • [ 云计算 华为云 ] 解决办法:如何更换华为云云耀云服务器L实例的镜像

文章目录

    • 一、评测背景
    • 二、评测声明
    • 三、被评测服务器参数及准备
      • 3.1 被评测服务器基本参数
      • 3.2 测试机采购
        • 3.2.1 华为云云耀云服务器L实例
        • 3.2.2 友商的轻量应用服务器 lighthouse
    • 四、使用 fio 测试磁盘 I/O 性能
      • 4.1 fio 安装
      • 4.2 fio 常用测试场景与测试方法
        • 4.2.1 测试场景
        • 4.2.2 测试方法
          • (1)使用命令行测试
          • (2)使用配置文件进行测试
        • 4.2.3 各运行参数说明
      • 4.2 在华为云云耀云服务器L实例运行 fio 测试
      • 4.3 友商的轻量应用服务器 lighthouse 运行 fio 测试
    • 五、最终测试比对结果
    • 六、文末总结

一、评测背景

本文是继之前文章:《华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 Geekbench 深度测评华为云云耀云服务器L实例》与 华为云云耀云服务器L实例评测|轻量级应用服务器对决:基于 STREAM 深度测评华为云云耀云服务器L实例后,继续探讨华为云的创新产品【华为云云耀云服务器L实例】,为读者提供全面的评测信息,本篇文章重点是测试其【华为云云耀云服务器L实例】的磁盘 I/O 性能。我们仍然选取了对比机器,也就是友商的轻量级应用服务器 lighthouse,经过使用 fio 的详细测试,我们将对华为云的最新云耀云服务器L实例的CPU处理器性能进行严格测试和分析,以帮助你更加清晰的认识华为云的最新云耀云服务器L实例,以及帮助你更好的在众多繁杂的服务器中进行选择判断。

二、评测声明

本人任何测试其云计算或者其他商品,都站在如下声明立场

尽管本文是在参与华为云云耀云服务器L实例评测活动的背景下编写的,但是本博主是站在一个中立的角度来进行评测,不存在因为是活动文上来就无脑吹,这有背征文的目的以及我的个人初衷

三、被评测服务器参数及准备

3.1 被评测服务器基本参数

华为云云耀云服务器L实例现阶段提供2核2G2核4G2核8G的 3 种 CPU 和内存规格,不同 CPU 和内存规格与系统盘、峰值带宽和流量包组合共有 6 种实例规格。这里选择的友商测试机为轻量应用服务器 lighthouse,该友商的轻量型应用服务器与华为云云耀云服务器L实例类似,都提供不同的应用场景,不通过的镜像支持以及规格,可以说是相互的对标产品。

本测试使用的华为云云耀云服务器L实例与友商的轻量应用服务器 lighthouse均位于广州区域,且配置均为2核2G,配置参数表格为:

规格配置华为云云耀云服务器L实例友商的轻量应用服务器 lighthouse
核心数2核2核
内存2G2G
操作系统CentOS 7.6CentOS 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 官方网站:https://sourceforge.net/directory/software-development/windows/

使用 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,要在最短的时间内多去读磁盘
    小文件通常测试随机读写,大文件通常测试顺序读写。

常见测试场景参照(重要):

  1. 顺序读写(吞吐量,常用单位为 MB/s):文件在硬盘上存储位置是连续的。

    适用场景:大文件拷贝(比如视频音乐)。速度即使很高,对数据库性能也没有参考价值。

  2. 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实例10490.951015122
友商的轻量应用服务器 lighthouse23.723.660506064

从上表中可以看出,同样是测试文件大小 1G 的情况下,华为云云耀云服务器L实例的顺序读与顺序写的速度要远高于友商轻量级应用服务器,但是在随机读与随机写的测试中,友商轻量级应用服务器的 IOPS 要略高于华为云云耀云服务器L实例,但是相差没有顺序读写那么夸张。

这也就说明,如果你是读写大文件,那么华为云云耀云服务器L实例的速度会远高于友商产品,而数据库或者应用在华为云云耀云服务器L实例上速率略低于友商竞品。

六、文末总结

在本文中,我们对被评测服务器的硬盘 I/O 性能进行了全面的评测和比对。在本文的重点部分,我们使用 fio 工具来测试这两款服务器的硬盘读取 I/O 性能。我们介绍了 fio 工具的安装过程、使用方法与相关详细运行参数报告进行了详细说明。并分别在两种服务器上运行了 fio 测试,以深入评估它们的在硬盘上的 I/O 性能。

过本文的评测和比对,可以帮助读者更好地了解这两款服务器的内存性能表现,为他们做出明智的决策提供有价值的信息。无论是在企业环境还是个人应用中,优化内存性能都是提高整体系统性能的关键一步。

[ 本文作者 ]   bluetata
[ 原文链接 ]   https://bluetata.blog.csdn.net/article/details/132954789
[ 最后更新 ]   09/18/2023 1:45
[ 版权声明 ]   如果您在非 CSDN 网站内看到这一行,
说明网络爬虫可能在本人还没有完整发布的时候就抓走了我的文章,
可能导致内容不完整,请去上述的原文链接查看原文。

http://www.ppmy.cn/news/1122735.html

相关文章

ImportError: Java package ‘edu‘ not found, requested by alias ‘edu‘

参考issue: https://github.com/ncbi-nlp/NegBio/issues/44 我目前的解决办法 pip uninstall jpype1 -y可以成功运行。

更新GitLab上的项目

更新GitLab上的项目 如有需要,请参考这篇:上传项目到gitlab上 1.打开终端,进入到本地项目的根目录。 2.如果你还没有将远程GitLab仓库添加到本地项目,你可以使用以下命令: 比如: git remote add origin …

flutter web 优化和flutter_admin_template

文章目录 Flutter Admin TemplateLive demo: https://githubityu.github.io/live_flutter_adminWeb 优化 Setup登录注册英文 亮色主题 中文 暗黑主题管理员登录权限 根据权限动态添加路由 第三方依赖License最后参考学习 Flutter Admin Template Responsive web with light/da…

C语言while循环嵌套-动态字母

1、题目 使用C语言实现对字母动态移动(根据用户输入的字符将字符从屏幕的坐标移动屏幕的右边)。 2、分析 字符的移动核心是在显示的字母前面补上对应的空格字符内容,配合上延时就可以实现字符从屏幕左边移动到屏幕右侧的效果,实现…

nginx 配置 ssl

1.1 Nginx如果未开启SSL模块,配置Https时提示错误 原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块&#xff0…

JavaScript学习小结

变量声明:使用var关键字,变量没有类型,但值有类型(弱类型语言) 数据类型: ①number ②string(单引号,双引号都可以表示字符串) ③boolean ④Object类型 ⑤undefine…

【获取最大软件版本号】python实现-附ChatGPT解析

1.题目 获取最大软件版本号 时间限制:1s 空间限制: 256MB 限定语言:不限 题目描述: Maven版本号定义,<主版本>.<次版本>.<增量版本>-<里程碑版本> 举例3.1.4-beta,其中,主版本和次版本都是必须的, 主版本,次版本,增量版本由多位数字组成,可能包…

基于C/C++的共享内存的创建和使用(Linux)

流程&#xff1a; 生成一个key值(函数&#xff1a;ftok)创建共享内存&#xff0c;返回一个共享内存id(函数&#xff1a;shmget)映射共享内存&#xff0c;关联的到当前进程&#xff0c;得到虚拟地址(函数&#xff1a;shmat)使用内存&#xff0c;此时操作shmat函数返回的指针就是…