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

news2024/11/16 16:31:41

在这里插入图片描述

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

相关华为云云耀云服务器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.coloradmin.cn/o/1018946.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM:如何判断对象已死?

对象已死? 在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(“死去”即不可能再被任何途径使用的对象)了。…

2023/09/17

文章目录 1. vscode展开所有代码快捷键ctrl k j2. git删除所有stash或指定stash git stash drop [可选stash名]3. vue在函数默认参数后增加新参数4. git push 添加“-u”参数5. vscode快捷输入符号$的使用6. WebGL之什么是GLB&GLTF文件?7. WebGL之什么是HDR&a…

python之pyQt5实例:Matplotlib的应用

1、显示逻辑 1.1MatplotlibWidget.py import sys import random import matplotlibmatplotlib.use("Qt5Agg") from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QSizePolicy, QWidget from numpy import arange, si…

nginx日志分割

nginx日志分割 有的用nginx做代理的,日志产生的特别多,而nginx的日志又是一整个,所以需要我们自己来写分割脚本了 小白教程,一看就会,一做就成。 1.写脚本 #!/bin/bash #nginx日志分割 LOGPATH/home/oldlogs CURLOG…

多目标优化算法:基于非支配排序的小龙虾优化算法(NSCOA)MATLAB

一、小龙虾优化算法COA 小龙虾优化算法(Crayfsh optimization algorithm,COA)由Jia Heming 等人于2023年提出,该算法模拟小龙虾的避暑、竞争和觅食行为,具有搜索速度快,搜索能力强,能够有效平衡…

前端用JavaScript实现桑基图(Sankey图)

前端用JavaScript实现桑基图(Sankey图) 桑基图(Sankey图),是流图的一种,常用来展示事物的数量、发展方向、数据量大小等,在可视化分析中经常使用。 本文,演示如何在前端用JavaScri…

Spring Boot - Rest VS GraphQL

文章目录 概述图解CodeSpring Boot RestSpring Boot GraphQL 概述 REST(Representational State Transfer)和GraphQL都是用于构建Web服务的API设计和交互方式,它们有不同的特点和优劣势。 REST(Representational State Transf…

PHP自己的框架2.0加载控制器并运行(重构篇四)

目录 1、加载控制器并运行 2、创建admin和index模块控制器 3、自动加载控制器文件 4、运行控制器中方法 5、运行模块下控制器方法 1、加载控制器并运行 2、创建admin和index模块控制器 <?php namespace app\admin\controller; class index{public function index(){ech…

【pytest】生成测试报告

0. 脚本&#xff1a; fixture/test_fixtures_02.py # 功能函数 import pytestdef multiply(a, b):return a * bclass TestMultiply:# fixturesclassmethoddef setup_class(cls):print("setup_class>")classmethoddef teardown_class(cls):print("teardown_c…

在PHP8中对数组进行计算-PHP8知识详解

在php8中&#xff0c;提供了丰富的计算函数&#xff0c;可以对数组进行计算操作。常见的计算函数如下几个&#xff1a;array_sum()函数、array_merge()函数、array_diff()函数、array_diff_assoc()函数、array_intersect()函数、array_intersect_assoc()函数。 1、array_sum()函…

MySQL数据库——MySQL8.0.26-Linux版安装

目录 准备Linux服务器 下载安装包 上传安装包 创建目录,并解压 安装mysql的安装包 启动MySQL服务 查询自动生成的root用户密码 修改root用户密码 创建用户 并给root用户分配权限 通过DataGrip远程连接MySQL 准备Linux服务器 云服务器或者虚拟机&#xff0c; Linux…

P2P协议的传输艺术

TP 采用两个 TCP 连接来传输一个文件。 控制连接&#xff1a;服务器以被动的方式&#xff0c;打开众所周知用于 FTP 的端口 21&#xff0c;客户端则主动发起连接。该连接将命令从客户端传给服务器&#xff0c;并传回服务器的应答。常用的命令有&#xff1a;list——获取文件目…

图解曲面积分的对称性

1.图解曲面积分的对称性 1.1 第一类曲面积分的一般对称性 二重积分、三重积分、第一类曲线积分、第一类曲面积分的一般对称性其原理都类似 平面和空间曲面的原理一样&#xff0c;以下内容以空间曲面为例 图中所示为积分区域 Σ \Sigma Σ&#xff0c;函数 f ( x , y , z ) f(…

PostgreSQL缓存管理

缓冲区管理器、存储和后端进程之间的关系 缓存管理结构 PostgreSQL 缓冲区管理器由buffer table、buffer descriptors和buffer pool组成。buffer pool层存储表和索引等数据文件页&#xff0c;以及空闲空间映射和可见性映射。buffer pool是一个数组&#xff0c;每个槽存储数据文…

Redis RedLock算法和底层源码分析

Redlock红锁算法 官网地址&#xff1a;Distributed Locks with Redis | Redis 为什么要使用RedLock&#xff1f; 解释&#xff1a; 线程 1 首先获取锁成功&#xff0c;将键值对写入 redis 的 master 节点&#xff0c;在 redis 将该键值对同步到 slave 节点之前&#xff0c;mas…

vue+express、gitee pm2部署轻量服务器

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none, // 告诉…

java基础-并发编程-CountDownLatch(JDK1.8)源码学习

CountDownLatch方法调用与类关系图 一、初始化&#xff1a;public CountDownLatch(int count) public CountDownLatch(int count) {if (count < 0) throw new IllegalArgumentException("count < 0");this.sync new Sync(count);}Sync(int count) {// 将参数…

pte初步认识学习

我们的时间的确很少&#xff0c;但是我们每天都乐意将珍贵的时间浪费在大量毫无意义的事情上 目录 pte介绍 PTE口语评分规则 pte架构 计算机科学23 QS排名 《芭比》 pte介绍 PTE口语评分规则 有抑扬顿挫 对于连读 不能回读 native pte对于个别单词没有读好&#xff0c…

JSP 学习笔记(基础)

出现背景&#xff1a; 由于 Servlet 输出 HTML 比较困难&#xff0c;所以出现了 JSP 这个代替品。 特点&#xff1a; 基于文本&#xff0c;HTML 和 Java 代码共同存在&#xff08;用 write() 来写 HTML 标签&#xff09;其本身就是个被封装后的 Servlet&#xff08;被编译为…

JavaScript的BOM操作

一、BOM 1.认识BOM BOM&#xff1a;浏览器对象模型&#xff08;Browser Object Model&#xff09; 简称 BOM&#xff0c;由浏览器提供的用于处理文档&#xff08;document&#xff09;之外的所有内容的其他对象&#xff1b;比如navigator、location、history等对象&#xff…