一种基于fio的hba卡自动化测试方法
【技术领域】
[0001 ] 本发明涉及服务器技术HBA卡I/O性能测试领域,具体地说是一种基于F10的HBA卡自动化测试方法。
【背景技术】
[0002]随着IT行业的高速发展,信息化、大数据及云计算的发展对服务器性能要求越来越高。HBA卡作为服务器连接数据存储的载体,性能指标直接影响服务器及存储的整体呈现。
[0003]Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。
[0004]F10是一个文件系统的benchmark工具,可以测试各种操作系统文件系统的I/O性能,可以进行不同测试块大小、不同模式下的I/O性能测试。但是F10只提供了简单的参数,单条命令的使用有非常大的测试局限,很难做到对HBA卡的I/O进行较为系统的性能及稳定性测试。
[0005]如果能够通过shell语言编写自动化的测试脚本,并手动进行测试参数的调整,将会极大提高HBA卡性能及稳定性测试的质量及效率。
【发明内容】
[0006]本发明的技术任务是针对以上不足,提供一种基于F10的HBA卡自动化测试方法,来解决HBA卡性能、稳定性自动化测试的问题。
[0007]本发明的技术任务是按以下方式实现的:
一种基于F10的HBA卡自动化测试方法,通过shell语言编写的自动化测试脚本进行测试,步骤为:
(1)根据HBA卡连接存储的测试需求人工修改测试脚本参数;
(2)脚本根据参数自动选择对应测试模块;
(3)测试模块根据参数自动开始测试;
(4)完成测试并输出结果到日志。
[0008]所述测试模块包括在线程不同、读写策略不同及数据块大小不同时的测试,还包括带宽测试以及在线程不同、读写策略不同及数据块大小不同时运行稳定性的测试。
[0009]本发明的一种基于F10的HBA卡自动化测试方法的流程示意图具有以下优点: 本发明适用于不同HBA卡型号及配置,仅需根据测试需求修改对应参数即可。解决了使用F10单条命令的测试局限性。丰富了测试手段,提高了测试效率和测试质量,更好的实现了 HBA卡自动化测试。
【附图说明】
[0010]下面结合附图对本发明进一步说明。
[0011]附图1为一种基于F10的HBA卡自动化测试方法的流程示意图。
【具体实施方式】
[0012]参照说明书附图和具体实施例对本发明的一种基于F10的HBA卡自动化测试方法的流程示意图作以下详细地说明。
[0013]实施例:
本发明的一种基于F10的HBA卡自动化测试方法,通过shell语言编写的自动化测试脚本进行测试,步骤为:
(1)根据HBA卡连接存储的测试需求人工修改测试脚本参数;
(2)脚本根据参数自动选择对应测试模块;
(3)测试模块根据参数自动开始测试;
(4)完成测试并输出结果到日志。
[0014]测试模块包括在线程不同、读写策略不同及数据块大小不同时的测试还包括带宽测试以及在线程不同、读写策略不同及数据块大小不同时运行稳定性的测试。
[0015]本发明测试实施方式为:
对模块变量及部分参数进行初始定义,如默认跑10 engine为liba1模式,代码为:
IS_FRAG=false
IS_STRESS=false
IS_BASE=false
IS_FILESYSTEM=false
IS_10PS=false
1_ENGINE=liba1
FILE_SIZE=100%
usage说明,对脚本可用到的参数进行说明,执行1test.sh - h会屏幕print,代码为:
usage () {
echo "$0 [-f] [_s] [_e 1_engine] [_h] [_b] [_d dev_name] [_m] [_ppart1n] [-w workdir] [_r] [_i 1ps]〃echo 〃-f fragment"echo 〃-s stress test〃
echo 〃-e 1engine type , default type is liba1〃echo 〃-b raw device base test〃
echo "example:〃
echo 〃 raw device fragment:nohup &>/dev/null sh 1test.sh -f _d /dev/
sda &〃
echo 〃 raw device base test:nohup &>/dev/null sh 1test.sh _b _d /dev/sda &〃
echo 〃If you have any quest1n, contact with me: miaoywOinspur.com〃 exit
套用getopts方式,对脚本命令行参数进行定义,例如执行1test.sh - b会自动将“IS_BASE=true”,代码为:
while getopts 〃hsfbe:d:mp:w:r1:〃 arg do
case $arg in h)
usage;; s)
IS_STRESS=true;; f)
IS_FRAG=true;; b)
IS—BASE=true;; w)
workdir=${OPTARG};; r)
IS_1PS=true;; i)
define—1ps=${OPTARG};; esac done
利用for循环嵌套,采用不同线程不同读写策略不同数据块大小进行测试并输出结果至log档,代码为:
if ${IS_FRAG};then fragment
fi
if $ {IS—BASE};then base_test
fi
if ${IS_10PS};thenfixed_1ps_test
fi
根据if语句的判断,调用base—test测试模块;
base_test () {
for Rff in write randwrite read randreaddo
for BS in 4k 16k 64k 512k do
for THREADS in 1 2 8 16 32 64 256do
if [ $THREADS _le 32 ];then
f1 —readwrite=${Rff} —bs=$ {BS} —numjobs=${THREADS}—runtime = 300s $ {PARA_LINE} — filename = $ {DEV_LIST}—name=${Rff}_${BS}_${THREADS} | tee -a ${Rff}.logelse
1depth=$(($THREADS/32))
PARA—LINE2=〃一end—fsync=0 —group—reporting —direct=l—1engine=$ {10_ENGINE} —1depth=$1depth —time_based —invalidate=l—norandommap —randrepeat=0 —exitall —size=${FILE—SIZE}〃
f1 —readwrite=${Rff} —bs=$ {BS} —numjobs=32 —runtime=300s$ {PARA_LINE2} —filename=$ {DEV—LIST} —name=$ {Rff} _$ {BS}_$ {THREADS} | tee -a$ {Rff}.log
fi
done
done
sleep 60sdone
设置参数运行带宽测试,代码为:
f1 —readwrite=read —bs=512k —direct=l —runtime=300s —end—fsync=0 —1engine=${10_ENGINE} —time_based —invalidate=l —norandommap--randrepeat=0 --group_reporting --numjobs=l --size=${FILE_SIZE}—filename=${DEV—LIST} —name=Bff_read |tee -a Bff_read.logsleep 60s
f1 —readwrite=write —bs=512k —direct=l —runtime=300s —end_fsync=0 —1engine=${10_ENGINE} —time_based —invalidate=l —norandommap--randrepeat=0 --group_reporting --numjobs=l --size=${FILE_SIZE}—filename=${DEV—LIST} —name=BW—write |tee -a BW—write, log sleep 60s
利用不同数据块大小、不同线程及不同读写策略运行稳定性测试,代码为:
# steady
1stat -xm 1 > 4k_rw_1ps &
f1 ——readwri te=randrw ——rwmixread=70 ——bs=4k —runtime = 3000s—numjobs=32 ${PARA—LINE} —filename=${DEV—LIST} —name=4k_rw_1ps | tee -a4k_rw_1ps.log
kill pidof 1stat' > /dev/null sleep 30s
1stat -xm 1 > 16k—w—1ps &
f1 —readwrite=randwrite —bs=16k —runtime=3000s —numjobs=32 ${PARA—LINE} —filename=${DEV—LIST} —name=16k—w—1ps | tee -a 16k—w—1ps.logkill pidof 1stat' > /dev/null通过上面【具体实施方式】,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的【具体实施方式】。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。除说明书所述的技术特征夕卜,均为本专业技术人员的已知技术。
【主权项】
1.一种基于F1的HBA卡自动化测试方法,其特征在于通过shell语言编写的自动化测试脚本进行测试,步骤为: (1)根据HBA卡连接存储的测试需求人工修改测试脚本参数; (2)脚本根据参数自动选择对应测试模块; (3)测试模块根据参数自动开始测试; (4)完成测试并输出结果到日志。2.根据权利要求1所述的一种基于F1的HBA卡自动化测试方法,其特征在所述测试模块包括在线程不同、读写策略不同及数据块大小不同时的测试还包括带宽测试以及在线程不同、读写策略不同及数据块大小不同时运行稳定性的测试。
【专利摘要】本发明公开了一种基于FIO的HBA卡自动化测试方法,属于服务器技术HBA卡I/O性能测试领域,本发明要解决的技术问题为解决HBA卡性能、稳定性自动化测试,采用的技术方案的步骤为:(1)根据HBA卡连接存储的测试需求人工修改测试脚本参数;(2)脚本根据参数自动选择对应测试模块;(3)测试模块根据参数自动开始测试;(4)完成测试并输出结果到日志。
【IPC分类】G06F11/22
【公开号】CN105389236
【申请号】CN201510906443
【发明人】苗永威
【申请人】浪潮电子信息产业股份有限公司
【公开日】2016年3月9日
【申请日】2015年12月9日