linux下fio测试并将结果导出成csv

直接上代码:

#!/bin/bash
#设置测试参数
iodepth=1
numjobs=1
runtime=10
size=200m
test_dir1=$1
test_dir2=$2
test_dir3=$3

timestamp=$(date +%Y%m%d_%H%M%S)

#检查脚本参数
if [ $# -eq 0 ]; then
    echo "Error: This script requires at least one argument."
    echo "Usage: $0 <argument1> [argument2 ...]"
    echo "for example:sh $0 /raid5,not /raid5/"
    exit 1
fi
#定义生成csv表格函数
function fiocsv(){
        bw=`cat $5 | grep -i "iops="|awk '{print $1 $3}'`
        iops=`cat $5 |grep -i "iops=" |awk '{print $1 $2}'|awk -F ',' '{print $1}'`
        lat=`cat $5 |grep -w lat|grep avg|awk '{print $1 $2 $5}'|awk -F "," '{print $1}'`
        echo ${test_dir},$1,$2,$3,$4,$bw,$iops,$lat >>${test_dir}/fio_result_${timestamp}/${test_dir}_fio_result.csv
}

function fiocsvmix(){
        mix_bw=`cat $5 |grep -i "iops=" |awk '{print $1 $3}'`
        mix_iops=`cat $5 |grep -i "iops=" |awk '{print $1 $2}'|awk -F ',' '{print $1}'`
        mix_read_lat=`cat $5 |grep -w "lat"|grep avg |head -1|awk '{print "read:",$1,$2,$5}'`
        mix_write_lat=`cat $5 |grep -w "lat"|grep avg |tail -1|awk '{print "write:",$1,$2,$5}'`
        echo ${test_dir},$1,$2,$3,$4,$mix_bw,$mix_iops,"$mix_read_lat $mix_write_lat" >>${test_dir}/fio_result_${timestamp}/${test_dir}_fio_result.csv
}

#创建文件结果存放目录
for test_dir in $test_dir1 $test_dir2 $test_dir3
do
	if [ ! -d ${test_dir}/fio_result_${timestamp} ];then
		mkdir ${test_dir}/fio_result_${timestamp}
	fi
	echo RW,BS,Iodepth,jobs,BW,IOPS,LAT >${test_dir}/fio_result_${timestamp}/${test_dir}_fio_result.csv
done

#进行随机读,随机写,顺序读,顺序写测试
for rw in randread randwrite read write
do
	for bs in 4k 8k 64k 256k
  	do
		for test_dir in $test_dir1 $test_dir2 $test_dir3
		do
    			echo "$test_dir $rw $bs iodepth=$iodepth numjobs=$numjobs  $rw test start" 
    			fio --name=$rw  --numjobs=$numjobs --iodepth=$iodepth --ioengine=libaio --rw=$rw  --bs=$bs --runtime=$runtime --direct=1 --size=$size --group_reporting=1 --directory=${test_dir} >${test_dir}/fio_result_${timestamp}/${rw}_${bs}_${iodepth}_${numjobs}.rec
    			fiocsv $rw $bs $iodepth $numjobs ${test_dir}/fio_result_${timestamp}/${rw}_${bs}_${iodepth}_${numjobs}.rec    
  		done
	done
done

#进行混合随机读写,混合读写测试
for mixrw in randrw readwrite
do
	for mixbs in 4k 8k 64k 256k
  	do
		for test_dir in $test_dir1 $test_dir2 $test_dir3
		do
    			echo "$test_dir $mixrw $mixbs iodepth=$iodepth numjobs=$numjobs  $mixrw test start"
    			fio --name=$mixrw  --numjobs=$numjobs --iodepth=$iodepth --ioengine=libaio --rw=$mixrw  --bs=$mixbs --runtime=$runtime --direct=1 --size=$size --group_reporting=1 --directory=${test_dir} >${test_dir}/fio_result_${timestamp}/${mixrw}_${mixbs}_${iodepth}_${numjobs}.rec 
   			fiocsv $mixrw $mixbs $iodepth $numjobs ${test_dir}/fio_result_${timestamp}/${mixrw}_${mixbs}_${iodepth}_${numjobs}.rec
  		done
	done
done

最终结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值