多盘同时进行fio读写的写法

做function测试的时候,经常会遇见测试多盘的情况,所以我们有时候是有必要会写一些基本的测试的脚本。下面我们看一个案例:
测试case
对所有服务器的单盘执行FIO Sequential read、Sequential Write、Random Read、Random Write性能测试,每个盘单独启一个FIO进程,参数配置如下, 每个测试执行10分钟,全盘空间测试,把每一个盘的BW、IOPS、平均Latency、99.99% QoS整理写入测试报告。
【FIO配置】
Block:4K ,8K,16K,32K,64K,128K,256K,512K,1024k;
QD:1,2,4,8,16,32,64,128;
Jobs:1,4,32;
下面我们来写一下这个测试脚本
1 首先我们要取出所有待测试的盘(OS盘除外),方法有很多种(可以参考我上一遍文章)
比如下面这个SUT 我们要测试"SN03"的分位的所有盘,并且创建以盘符命名的文件夹,用来存放每个盘的IO log。

 lsscsi
[0:0:0:0]    cd/dvd  AMI      Virtual CDROM0   1.00  /dev/sr0
[1:0:0:0]    disk    ATA      Micron_5200_MTFD U004  /dev/sda
[1:0:1:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdb
[1:0:2:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdc
[1:0:3:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdd
[1:0:4:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sde
[1:0:5:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdf
[1:0:6:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdg
[1:0:7:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdh
[1:0:8:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdi
[1:0:9:0]    disk    ATA      ST16000NM001G-2K SN03  /dev/sdj
[1:0:10:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdk
[1:0:11:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdl
[1:0:12:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdm
[1:0:13:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdn
[1:0:14:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdo
[1:0:15:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdp
[1:0:16:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdq
[1:0:17:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdr
[1:0:18:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sds
[1:0:19:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdt
[1:0:20:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdu
[1:0:21:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdv
[1:0:22:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdw
[1:0:23:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdx
[1:0:24:0]   disk    ATA      ST16000NM001G-2K SN03  /dev/sdy
#!/bin/bash
echo "all hdds random and Sequence performance test"
for DEV in $(lsscsi  |grep "SN03"|awk '{print $NF}'|awk -F "/" '{print $NF}')
do
        mkdir  $DEV
done

2.我们将对应的fio配置嵌套在for循环里
最后一层for循环 {read,write,randread,randwrite}四个参数分别代表顺序读,顺序写,随机读,随机写。

echo "all hdds random and Sequence performance test"
for DEV in $(lsscsi  |grep "SN03"|awk '{print $NF}'|awk -F "/" '{print $NF}')
do
        mkdir  $DEV
        for blocksize in 4 8 16 32 64 128 256 512 1024
        do
                for QD in 1 2 4 8 16 32 64 128 256
                do
                        for jobs in 1 4 32
                        do
                                for item in {read,write,randread,randwrite}
                                do
                                done
                        done
                done
        done  
done

3 将fio写到最后一层循环里

#!/bin/bash
echo "all hdds random and Sequence performance test"
for DEV in $(lsscsi  |grep "SN03"|awk '{print $NF}'|awk -F "/" '{print $NF}')
do
        mkdir  $DEV
        for blocksize in 4 8 16 32 64 128 256 512 1024
        do
                for QD in 1 2 4 8 16 32 64 128 256
                do
                        for jobs in 1 4 32
                        do
                                for item in {read,write,randread,randwrite}
                                do
                                        fio --name=${blocksie}kB_${item}_${jobs}job_QD${QD} --filename=/dev/${DEV}  --direct=1 --thread=1 --numjobs=${jobs} --iodepth=${QD} --rw=$item --bs=${blocksize}k --runtime=200 --time_based=1 --ramp_time=60 --size=100% --norandommap=1 --randrepeat=0 --group_reporting --log_avg_msec=1000 --bwavgtime=1000 --minimal  >>${DEV}/${DEV}_${item}_data.log
                                done
                        done
                done
        done  
done

4.注意:我们的目的是让其多盘同时进行IO测试,但是目前来看,脚本是单进程运行的,所以我们需要用一个&加在第二层for循环后面,这样就能让其所有的盘同时进行IO测试。

#!/bin/bash
echo "all hdds random and Sequence performance test"
for DEV in $(lsscsi  |grep "SN03"|awk '{print $NF}'|awk -F "/" '{print $NF}')
do
        mkdir  $DEV
        for blocksize in 4 8 16 32 64 128 256 512 1024
        do
                for QD in 1 2 4 8 16 32 64 128 256
                do
                        for jobs in 1 4 32
                        do
                                for item in {read,write,randread,randwrite}
                                do
                                        fio --name=${blocksie}kB_${item}_${jobs}job_QD${QD} --filename=/dev/${DEV}  --direct=1 --thread=1 --numjobs=${jobs} --iodepth=${QD} --rw=$item --bs=${blocksize}k --runtime=200 --time_based=1 --ramp_time=60 --size=100% --norandommap=1 --randrepeat=0 --group_reporting --log_avg_msec=1000 --bwavgtime=1000 --minimal  >>${DEV}/${DEV}_${item}_data.log
                                done
                        done
                done
        done  &
done
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
fio是一个基于命令行的灵活的I/O性能测试工具,可以用来测试各种存储设备的读写性能,包括NAND闪存。使用fio进行NAND闪存的读写速度测试可以按照以下步骤进行: 1. 安装fio工具:在Linux系统中,可以使用包管理器来安装fio工具。例如,在Ubuntu系统中,可以使用以下命令来安装fio工具: ``` sudo apt-get install fio ``` 2. 编fio测试脚本:可以使用文本编辑器编fio测试脚本。以下是一个简单的fio测试脚本示例: ``` [global] ioengine=libaio direct=1 bs=4k size=512M numjobs=1 runtime=60 [random-read] rw=randread stonewall filename=/dev/nand ``` 该测试脚本指定了使用libaio引擎、直接I/O、块大小为4KB、测试文件大小为512MB、测试时间为60秒、测试随机读取操作,并将测试文件指定为NAND闪存设备。 3. 运行fio测试脚本:可以使用以下命令来运行fio测试脚本: ``` fio test.fio ``` 其中,test.fiofio测试脚本的文件名。 4. 分析测试结果:fio测试脚本运行完成后,会自动生成测试结果报告。可以通过分析测试结果来评估NAND闪存的读写速度和性能。 需要注意的是,fio测试脚本需要根据具体的测试需求进行调整。例如,可以改变I/O引擎、块大小、测试文件大小、测试时间等参数来进行不同类型的测试。通过使用fio工具进行NAND闪存的读写速度测试,可以得到较为准确的测试结果,并且可以根据具体的测试需求进行灵活的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值