ITPub博客

首页 > 云计算 > 开源云工具 > 使用 fio 工具测试 EBS 性能

使用 fio 工具测试 EBS 性能

原创 开源云工具 作者:java06051515 时间:2018-11-26 16:21:43 0 删除 编辑

fio

fio 是一个专业的磁盘性能测试工具,本文将以 滴滴云 SSD 云盘为例,演示用 fio 测试 EBS 性能的方法。

磁盘性能指标

指标 说明
IOPS 每秒处理随机读写的 IO 个数
带宽 每秒处理顺序读写的 IO 数据量
延迟 处理单个 IO 的平均耗时

读写类型说明

类型 说明
顺序读/写 每次 IO 的读/写位置紧跟上一个 IO 的读/写位置,即每次读/写的偏移量是顺序递增的
随机读/写 每次 IO 的读/写位置在磁盘内是随机的,与上一个 IO 的读/写位置无关

环境准备

创建滴滴云 EBS

创建滴滴云服务器 DC2

创建滴滴云 EBS 并挂载到 DC2

DC2 配置:

参数 类型 规格 说明
操作系统 centos 7 – –
CPU – 4核 –
内存 – 8G –
系统盘 本地 SSD 80G vda
数据盘 SSD 云盘(EBS) 200G vdb

登录 DC2, 用 lsblk 命令查看挂载好的块设备:

其中, vdb 就是接下来要测试的 EBS。

安装 fio

  # sudo yum install fio -y

查看 fio 版本

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   fio  - v

  fio - 3.1

开始测试

注:如果 EBS 里已有数据,为防止数据损坏,请用文件的方式进行测试,即: 将 EBS mount 到目录后,用 fio 读写 mount 目录下的 test 文件。

测试顺序写带宽

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 128  - ioengine = libaio  - rw = write  - bs = 1M  - size = 10G  - numjobs = 1  - runtime = 200  < mark >- filename =/ mnt / test </ mark > - name = perf

输出:

其中 BW=121MiB/s 表示带宽为 121MiB/s。

测试随机写 IOPS

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 128  - ioengine = libaio  - rw = randwrite  - bs = 4K  - size = 5G  - numjobs = 1  - runtime = 200  - filename =/ mnt / test  - name = perf

 

输出:

测试结果为:IOPS=8206。

测试随机写延迟

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 1  - ioengine = libaio  - rw = randwrite  - bs = 4K  - size = 5G  - numjobs = 1  - runtime = 200  - filename =/ mnt / test  - name = perf

输出:

测试结果为, 写平均延迟 = 118 us。

测试顺序读带宽

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 128  - ioengine = libaio  - rw = read  - bs = 1M  - size = 10G  - numjobs = 1  - runtime = 200  < mark >- filename =/ mnt / test </ mark > - name = perf

测试随机读 IOPS

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 128  - ioengine = libaio  - rw = randread  - bs = 4K  - size = 10G  - numjobs = 1  - runtime = 200  < mark >- filename =/ mnt / test </ mark > - name = perf

测试随机读延迟

  [ dc2 - user @ 10 - 254 - 252 - 85  ~ ]$   sudo  fio  - direct = 1  - iodepth = 1  - ioengine = libaio  - rw = randread  - bs = 4K  - size = 5G  - numjobs = 1  - runtime = 200  - filename =/ mnt / test  - name = perf

fio 参数说明

参数 说明
direct direct=1 表示测试的 IO 用直接 IO,即跳过文件系统高速缓存, 使测试结果更接近磁盘性能
iodepth IO 队列长度,典型值: 64 或 128, 值越大磁盘的 IO 负载越高,同时 IO 延迟也会增大,iodepth=1 用来测 IO 延迟
ioengine 设置 IO 引擎, 决定 fio 调用哪种 IO 库,通常用 libaio
rw IO 类型:read = 顺序读,write = 顺序写,randread = 随机读,randwrite = 随机写…
bs IO 块大小,即每个 IO 读写的数据量,通常 bs=1M 用于测试顺序读写带宽,bs=4K 用于测试随机读写的 IOPS
size IO 读写数据总量,如果 runtime 参数设置的时间到,则会停止
numjobs 同时读写的子进程数
runtime 读写时长,如果读写完 size 参数设置的数据量后还未到读写时长且没有设置 time_based 选项,则停止
name 本次测试任务的名字


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31559758/viewspace-2221624/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-10-26

  • 博文量
    167
  • 访问量
    216132