存储性能测试常用工具记录

存储性能测试常用工具记录

记录块存储、文件存储、对象存储等存储类型常用的性能测试工具及对应的测试命令。

存储类型 测试工具 备注
块存储 fio,rbd bench 指标:iops、吞吐量
文件存储 fio,rados bench 指标:iops、吞吐量
块存储 cosbench 指标:吞吐量

1. 块存储性能测试

1.1 fio性能测试

FIO是一款开源的 I/O 压力测试工具,主要是用来测试磁盘的IO性能。它可以支持多种不同的I/O引擎。

fio官网地址
fio文档

1.1.1 FIO安装
# centos yum安装
# yum install fio
# yum install libaio-devel  # 使用libaio发起异步IO请求。

# ubuntu apt安装
$ sudo apt-get install libaio-dev

# 源码编译安装
# wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
# yum install libaio-devel
# tar -zxvf fio-2.0.7.tar.gz
# cd fio-2.0.7
# ./configure
# make && make install  
1.1.2 fio参数解读
# 运行参数
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=50G -numjobs=10 -runtime=1000 -group_reporting -name=mytest

说明:

  • filename=/dev/sdb1
    定义测试文件(设备)的名称。此处选择文件,则代表测试文件系统的性能,例如:-filename=/opt/fiotest/fiotest.txt;此处选择设备名称,则代表测试裸盘的性能,例:-filename=/dev/vdb1 。

注:如果在已经分区、并创建文件系统,且已写入数据的磁盘上进行性能测试,请注意 filename选择指定文件,以避免覆盖文件系统和原有数据。

  • direct=1
    定义是否使用direct IO,可选值如下:值为0,表示使用buffered IO;值为1,表示使用 direct IO。取值1,测试过程绕过机器自带的buffer,使测试结果更真实。

  • iodepth 1
    队列深度,只有使用libaio时才有意义,这是一个可以影响IOPS的参数,通常情况下为1。定义测试时的IO队列深度,默认为1。此处定义的队列深度是指每个线程的队列深度,如果有多个线程测试,意味着每个线程都是此处定义的队列深度。fio总的IO并发数 =iodepth * numjobs。

  • rw=randwrite
    定义测试时的读写策略,可选read,write,randread,randwrite,randrw,readwrite:

  • ioengine=psync
    io引擎使用pync方式,如果要使用libaio引擎,需要yum install libaio-devel包。定义fio如何下发IO请求,通常有同步IO和异步IO:同步IO一次只能发出一个IO请求, 等待内核完成后才返回。这样对于单个线程IO队列深度总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32个线程同时工作把IO队列深度塞满。异步IO则通常使用libaio这样的方式一次提交一批IO请求,然后等待一批的完成,减少交互的次 数,会更有效率。

  • bs=4k
    定义IO的块大小(block size),单位是k、K、m和M等,默认IO块大小为4 KB。

  • bsrange=512-2048
    同上,提定数据块的大小范围

  • size=50G
    定义测试IO操作的数据量,若未指定runtime这类参数,fio会将指定大小的数据量全部读/写完成,然后才停止测试。该参数的值,可以是带单位的数字,比如size=10G,表示读/写的数据量为10GB;也可是百分数,比如size=20%,表示读/写的数据量占该设 备总文件的20%的空间。建议测试数据量为内存两倍大,尽量避免缓存影响。

  • numjobs=10
    定义测试的并发线程数。

  • runtime=1000
    定义测试时间。如果未配置,则持续将size指定的文件大小,以每次bs值为分块大小读/ 写完。

  • rwmixwrite=30
    在混合读写的模式下,写占30%

  • group_reporting
    定义测试结果显示模式,group_reporting 表示汇总每个进程的统计信息,而非以不同 job汇总展示信息。
    name=mytest:定义测试任务名称。

其他参数:

  • lockmem=1g
    只使用1g内存进行测试。
  • zero_buffers
    用0初始化系统buffer。
  • nrfiles=8
    每个进程生成文件的数量。
  • time_based
    如果设置的话,即使file已被完全读写或写完,也要执行完runtime规定的时间。它是通过循环执行相同的负载来实现的,与runtime相对应。
  • ramp_time=time
    设定在记录任何性能信息之前要运行特定负载的时间。这个用来等性能稳定后,再记录日志
1.1.3 测试场景

4k随机写iops

fio -filename=/tmp/fio.img -direct=1 -iodepth 32 -thread -rw=randwrite -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest

4k随机读iops

fio -filename=/tmp/fio.img -direct=1 -iodepth 32 -thread -rw=randread -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest

4k随机混合读写iops

fio -filename=/tmp/fio.img -direct=1 -iodepth 32 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest

1M顺序写吞吐量

fio -filename=/tmp/fio.img -direct=1 -iodepth 32 -thread -rw=write -ioengine=libaio -bs=1M -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest

1.1.4 fio测试结果解读

[root@i-byNYDrAOM ~]# fio -filename=/tmp/fio.img -direct=1 -iodepth 32 -thread -rw=randrw -rwmixread=70 -ioengine=libaio -bs=4k -size=200m -numjobs=8 -runtime=60 -group_reporting -name=mytest
mytest: (g=0): rw=randrw, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=32
...
fio-3.7
Starting 8 threads
Jobs: 8 (f=8): [m(8)][100.0%][r=3083KiB/s,w=1405KiB/s][r=770,w=351 IOPS][eta 00m:00s]
mytest: (groupid=0, jobs=8): err= 0: pid=81241: Tue Mar 12 17:19:53 2024
   read: IOPS=782, BW=3129KiB/s (3204kB/s)(184MiB/60230msec)
    slat (nsec): min=1643, max=40209k, avg=132078.80, stdev=1381884.87
    clat (msec): min=3, max=505, avg=228.62, stdev=15.45
     lat (msec): min=3, max=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lldhsds

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值