X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fmds-survey.sh;h=26987c2d23815b7be56f15880b92d53e7291efb2;hp=9d98c699e6c3841ade95ae85f63feba5e9ae6573;hb=1bf858d5e1985aabafb90f4a011b737f95504b67;hpb=2179aa60137557a8a289ee3b105a5efa7db90ac8 diff --git a/lustre/tests/mds-survey.sh b/lustre/tests/mds-survey.sh index 9d98c69..26987c2 100644 --- a/lustre/tests/mds-survey.sh +++ b/lustre/tests/mds-survey.sh @@ -11,7 +11,7 @@ init_logging build_test_filter check_and_setup_lustre -file_count=${file_count:-100000} +file_count=${file_count:-150000} dir_count=${dir_count:-4} thrhi=${thrhi:-8} thrlo=${thrlo:-1} @@ -26,24 +26,37 @@ if [ -z ${MDSSURVEY} ]; then skip_env "mds-survey not found" && exit fi -# check for available inode, reduce to fit -inode_per_thr=$((dir_count * file_count)) -require_inode=$((inode_per_thr * thrhi * 11/10)) -avail_inode=$($LFS df -i $MOUNT | grep "filesystem summary:" | \ - awk '{print $5}') - -while [ $require_inode -ge $avail_inode ]; do - echo "Require $require_inode inode to run, only have $avail_inode" - # reduce 20% - file_count=$((file_count * 8 / 10)) - inode_per_thr=$((dir_count * file_count)) - require_inode=$((inode_per_thr * thrhi * 11 / 10)) -done - -if [ $require_inode -eq 0 ]; then - skip_env "Not enough inode to run" && exit -fi +adjust_inode() { + local require_inode=0 + local avail_mdt_inode=0 + local avail_ost_inode=0 + + require_inode=$((file_count * thrhi)) + # get available inode for mdt + avail_mdt_inode=$($LFS df -i $MOUNT | grep "filesystem summary:" | \ + awk '{print $5}') + avail_mdt_inode=$((avail_mdt_inode * 9 / 10)) + + # get available inode for ost + for i in $($LFS df -i | grep ${FSNAME}-OST | awk '{print $4}'); do + avail_ost_inode=$((avail_ost_inode + i)) + done + avail_ost_inode=$((avail_ost_inode * 9 / 10)) + + ((require_inode > avail_mdt_inode)) && require_inode=$avail_mdt_inode + ((require_inode > avail_ost_inode)) && require_inode=$avail_ost_inode + + if ((require_inode == 0)); then + error "Fail to get the inode count" + fi + # convert it back to per thread inode + require_inode=$((require_inode / thrhi)) + + echo $require_inode +} + +file_count=$(adjust_inode) ost_count=$($LCTL dl | grep -c osc) # first unmount all the lustre clients @@ -60,19 +73,20 @@ mds_survey_run() { local layer=${1:-mdd} local stripe_count=${2:-0} local mds=$(facet_host $SINGLEMDS) + local rc=0 rm -f ${TMP}/mds_survey* local target=$(get_target) - local cmd1="file_count=$file_count thrlo=$thrlo thrhi=$thrhi" - local cmd2="dir_count=$dir_count layer=$layer stripe_count=$stripe_count" - local cmd3="rslt_loc=${TMP} targets=\"$mds:$target\" $MDSSURVEY" - local cmd="$cmd1 $cmd2 $cmd3" + local cmd="file_count=$file_count thrlo=$thrlo thrhi=$thrhi" + local cmd+=" dir_count=$dir_count layer=$layer stripe_count=$stripe_count" + local cmd+=" rslt_loc=${TMP} targets=\"$mds:$target\" $MDSSURVEY" echo + $cmd - eval $cmd || error "mds-survey failed" + eval $cmd || rc=$? cat ${TMP}/mds_survey* rm -f ${TMP}/mds_survey* + ((rc == 0)) || error "mds-survey failed" } test_1() {