转自:Jarvis Wang
FIO测试脚本
FIO是一个UNIX环境下的硬盘和阵列性能测试工具,具有丰富的参数,可以调用各种各样的读写函数进行测试,帮助文档参见:http://www.cse.unsw.edu.au/~aaronc/iosched/doc/fio.1.html
下面是我写的两个FIO测试脚本,一个用于随机I/O测试,一个用于多路顺序I/O测试:random_io_test.sh----------------------------------------------------------------------------target=$1size=`cat /proc/partitions | grep $target | awk '{print $3}'`model=`lsscsi | grep $target$ | awk '{printf "%s_%s",$4,$5}'`echo "CASEID,IOPS,RIOPS,RLAT,WIOPS,WLAT" | tee $model.$target.random.csvecho '' > $model.$target.random.logcp libaio.so.1 /lib64/for read in 0 20 40 60 80 100do for block in 4 8 16 32 do for queue in 1 2 4 8 16 do name=R_${read}R_${block}K_${queue}Q ./fio --name=$name --rw=randrw --direct=1 --norandommap --ioengine=libaio --runtime=60s --ioscheduler=noop --size=${size}k --filename=/dev/$target --rwmixread=$read --bs=${block}k --iodepth=$queue --minimal >> $model.$target.random.log tail -2 $model.$target.random.log | awk -F ";" -v BLOCK=$block '/K/{printf "%s,%.2f,%.2f,%.2f,%.2f,%.2f\n",$1,($5+$21)/BLOCK,$5/BLOCK,$13/1000,$21/BLOCK,$29/1000}' | tee -a $model.$target.random.csv done #end queue depth done #end block sizedone #end read percent----------------------------------------------------------------------------sequential_io_test.sh----------------------------------------------------------------------------target=$1size=`cat /proc/partitions | grep $target | awk '{print $3}'`model=`lsscsi | grep $target$ | awk '{printf "%s_%s",$4,$5}'`echo "CASEID,MBPS,RMBPS,RLAT,WMBPS,WLAT" | tee $model.$target.seqential.csvecho '' > $model.$target.seqential.logcp libaio.so.1 /lib64/for read in 0 20 40 60 80 100do for block in 64 128 256 512 do for stream in 1 2 4 8 16 do name=S_${read}R_${block}K_${stream}S ./fio --name=$name -rw=rw --direct=1 --ioengine=libaio --runtime=60s --ioscheduler=noop --filename=/dev/$target --rwmixread=$read --bs=${block}k --iodepth=1 --zonesize=$[size/stream]k --numjobs=$stream --group_reporting --minimal >> $model.$target.seqential.log tail -2 $model.$target.seqential.log | awk -F ";" '/K/{printf "%s,%.2f,%.2f,%.2f,%.2f,%.2f\n",$1,($5+$21)/1024,$5/1024,$13/1000,$21/1024,$29/1000}' | tee -a $model.$target.seqential.csv done #end queue depth done #end block sizedone #end read percent----------------------------------------------------------------------------
Shell编程相关资料
Bash新手指南
Linux Shell Scripting Tutorial v1.05r3awk使用详细 Linux Shell编程 Linux系统用户账号的管理 文件和目录访问权限设置