X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ffunctions.sh;h=c76ba5653fde67c14dd0f82ad55ea0ec66acb5e0;hb=455f30ac2817d342125d886e54c67abd07133a73;hp=23ff2a435a67215bde59166c0a1e2051421df340;hpb=8db990334e243f98d253c55a46675c2d633dc9cc;p=fs%2Flustre-release.git diff --git a/lustre/tests/functions.sh b/lustre/tests/functions.sh index 23ff2a4..c76ba56 100644 --- a/lustre/tests/functions.sh +++ b/lustre/tests/functions.sh @@ -194,11 +194,16 @@ mpi_run () { } nids_list () { - local list - for i in ${1//,/ }; do - list="$list $i@$NETTYPE" - done - echo $list + local list + local escape="$2" + for i in ${1//,/ }; do + if [ "$list" = "" ]; then + list="$i@$NETTYPE" + else + list="$list$escape $i@$NETTYPE" + fi + done + echo $list } # FIXME: all setup/cleanup can be done without rpc.sh @@ -209,10 +214,10 @@ lst_end_session () { export LST_SESSION=`$LST show_session 2>/dev/null | awk -F " " '{print $5}'` [ "$LST_SESSION" == "" ] && return + $LST stop b if $verbose; then $LST show_error c s fi - $LST stop b $LST end_session } @@ -284,6 +289,8 @@ run_compilebench() { # compile dir kernel-0 ~1GB # required space ~1GB * cbench_IDIRS + local dir=${1:-$DIR} + cbench_DIR=${cbench_DIR:-""} cbench_IDIRS=${cbench_IDIRS:-2} cbench_RUNS=${cbench_RUNS:-2} @@ -296,7 +303,7 @@ run_compilebench() { [ -e $cbench_DIR/compilebench ] || \ { skip_env "No compilebench build" && return; } - local space=$(lfs_df $DIR | awk '/^filesystem/{ print $4 }') + local space=$(df -P $dir | tail -n 1 | awk '{ print $4 }') if [[ $space -le $((1024 * 1024 * cbench_IDIRS)) ]]; then cbench_IDIRS=$((space / 1024 / 1024)) [[ $cbench_IDIRS -eq 0 ]] && @@ -310,7 +317,7 @@ run_compilebench() { # t-f _base needs to be modifyed to set properly tdir # for new "test_foo" functions names # local testdir=$DIR/$tdir - local testdir=$DIR/d0.compilebench + local testdir=$dir/d0.compilebench mkdir -p $testdir local savePWD=$PWD @@ -335,6 +342,7 @@ run_metabench() { mbench_NFILES=${mbench_NFILES:-30400} # threads per client mbench_THREADS=${mbench_THREADS:-4} + mbench_OPTIONS=${mbench_OPTIONS:-} [ x$METABENCH = x ] && { skip_env "metabench not found" && return; } @@ -353,7 +361,7 @@ run_metabench() { # -S Run the file stat tests. # -c nfile Number of files to be used in each test. # -k Cleanup. Remove the test directories. - local cmd="$METABENCH -w $testdir -c $mbench_NFILES -C -S -k" + local cmd="$METABENCH -w $testdir -c $mbench_NFILES -C -S -k $mbench_OPTIONS" echo "+ $cmd" # find out if we need to use srun by checking $SRUN_PARTITION @@ -536,35 +544,50 @@ run_connectathon() { } run_ior() { - local type=${1:="ssf"} - - IOR=${IOR:-$(which IOR 2> /dev/null || true)} - # threads per client - ior_THREADS=${ior_THREADS:-2} - ior_iteration=${ior_iteration:-1} - ior_blockSize=${ior_blockSize:-6} # GB - ior_xferSize=${ior_xferSize:-2m} - ior_type=${ior_type:-POSIX} - ior_DURATION=${ior_DURATION:-30} # minutes - - [ x$IOR = x ] && + local type=${1:="ssf"} + + IOR=${IOR:-$(which IOR 2> /dev/null || true)} + # threads per client + ior_THREADS=${ior_THREADS:-2} + ior_iteration=${ior_iteration:-1} + ior_blockSize=${ior_blockSize:-6} + ior_blockUnit=${ior_blockUnit:-M} # K, M, G + ior_xferSize=${ior_xferSize:-1M} + ior_type=${ior_type:-POSIX} + ior_DURATION=${ior_DURATION:-30} # minutes + local multiplier=1 + case ${ior_blockUnit} in + [G]) + multiplier=$((1024 * 1024 * 1024)) + ;; + [M]) + multiplier=$((1024 * 1024)) + ;; + [K]) + multiplier=1024 + ;; + *) error "Incorrect block unit should be one of [KMG]" + ;; + esac + + [ x$IOR = x ] && { skip_env "IOR not found" && return; } - local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }') - local total_threads=$(( num_clients * ior_THREADS )) - echo "+ $ior_blockSize * 1024 * 1024 * $total_threads " - if [ $((space / 2)) -le \ - $(( ior_blockSize * 1024 * 1024 * total_threads)) ]; then - echo "+ $space * 9/10 / 1024 / 1024 / $num_clients / $ior_THREADS" - ior_blockSize=$(( space /2 /1024 /1024 / num_clients / ior_THREADS )) - [ $ior_blockSize = 0 ] && \ - skip_env "Need free space more than $((2 * total_threads))GB: \ - $((total_threads *1024 *1024*2)), have $space" && return - - local reduced_size="$num_clients x $ior_THREADS x $ior_blockSize" - echo "free space=$space, Need: $reduced_size GB" - echo "(blockSize reduced to $ior_blockSize Gb)" - fi + # calculate the space in bytes + local space=$(df -B 1 -P $DIR | tail -n 1 | awk '{ print $4 }') + local total_threads=$((num_clients * ior_THREADS)) + echo "+ $ior_blockSize * $multiplier * $total_threads " + if [ $((space / 2)) -le \ + $((ior_blockSize * multiplier * total_threads)) ]; then + ior_blockSize=$((space / 2 / multiplier / total_threads)) + [ $ior_blockSize -eq 0 ] && \ + skip_env "Need free space more than $((2 * total_threads)) \ + ${ior_blockUnit}: have $((space / multiplier))" && + return + + echo "(reduced blockSize to $ior_blockSize \ + ${ior_blockUnit} bytes)" + fi print_opts IOR ior_THREADS ior_DURATION MACHINEFILE @@ -579,19 +602,23 @@ run_ior() { $LFS setstripe $testdir -c -1 || { error "setstripe failed" && return 2; } fi - # - # -b N blockSize -- - # contiguous bytes to write per task (e.g.: 8, 4k, 2m, 1g)" - # -o S testFileName - # -t N transferSize -- size of transfer in bytes (e.g.: 8, 4k, 2m, 1g)" - # -w writeFile -- write file" - # -r readFile -- read existing file" - # -T maxTimeDuration -- max time in minutes to run tests" - # -k keepFile -- keep testFile(s) on program exit - - local cmd="$IOR -a $ior_type -b ${ior_blockSize}g -o $testdir/iorData \ - -t $ior_xferSize -v -w -r -i $ior_iteration -T $ior_DURATION -k" - [ $type = "fpp" ] && cmd="$cmd -F" + # + # -b N blockSize -- + # contiguous bytes to write per task (e.g.: 8, 4K, 2M, 1G)" + # -o S testFileName + # -t N transferSize -- size of transfer in bytes (e.g.: 8, 4K, 2M, 1G)" + # -w writeFile -- write file" + # -r readFile -- read existing file" + # -W checkWrite -- check read after write" + # -C reorderTasks -- changes task ordering to n+1 ordering for readback + # -T maxTimeDuration -- max time in minutes to run tests" + # -k keepFile -- keep testFile(s) on program exit + + local cmd="$IOR -a $ior_type -b ${ior_blockSize}${ior_blockUnit} \ + -o $testdir/iorData -t $ior_xferSize -v -C -w -r -W \ + -i $ior_iteration -T $ior_DURATION -k" + + [ $type = "fpp" ] && cmd="$cmd -F" echo "+ $cmd" # find out if we need to use srun by checking $SRUN_PARTITION @@ -809,9 +836,6 @@ run_parallel_grouplock() { # mpi_run uses mpiuser chmod 0777 $testdir - do_nodes $clients "lctl set_param llite.*.max_rw_chunk=0" || - error "set_param max_rw_chunk=0 failed " - local cmd local status=0 local subtest @@ -908,7 +932,7 @@ run_statahead () { local num_mntpts=$statahead_NUMMNTPTS local mntpt_root=$TMP/mntpt/lustre - local mntopts=${MNTOPTSTATAHEAD:-$MOUNTOPT} + local mntopts=$MNTOPTSTATAHEAD echo "Mounting $num_mntpts lustre clients starts on $clients" trap "cleanup_statahead $clients $mntpt_root $num_mntpts" EXIT ERR