多盘同时进行fio读写的写法 |
您所在的位置:网站首页 › 盘符最多 › 多盘同时进行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 done2.我们将对应的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 done3 将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 done4.注意:我们的目的是让其多盘同时进行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 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |