X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ffunctions.sh;h=8e5a3cda8b005a014c3b0d136a37e55629a3e1ec;hb=4f53536d002c13886210b672b657795baa067144;hp=b176b7bff1448e7aee477bcdac212a213e132bf4;hpb=5d37670e8507563db556879041c7992936aefa56;p=fs%2Flustre-release.git diff --git a/lustre/tests/functions.sh b/lustre/tests/functions.sh index b176b7b..8e5a3cd 100644 --- a/lustre/tests/functions.sh +++ b/lustre/tests/functions.sh @@ -254,6 +254,19 @@ short_hostname() { echo $(sed 's/\..*//' <<< $1) } +### +# short_nodename +# +# Find remote nodename, stripped of any domain, etc. +# 'hostname -s' is easy, but not implemented on all systems +short_nodename() { + local rname=$(do_node $1 "uname -n" || echo -1) + if [[ "$rname" = "-1" ]]; then + rname=$1 + fi + echo $(short_hostname $rname) +} + print_opts () { local var @@ -267,18 +280,13 @@ print_opts () { } run_compilebench() { - -# Takes: -# 5 min * cbench_RUNS -# SLOW=no 10 mins -# SLOW=yes 50 mins -# Space estimation: -# compile dir kernel-1 680MB -# required space 680MB * cbench_IDIRS = ~7 Gb + # Space estimation: + # compile dir kernel-0 ~1GB + # required space ~1GB * cbench_IDIRS cbench_DIR=${cbench_DIR:-""} - cbench_IDIRS=${cbench_IDIRS:-4} - cbench_RUNS=${cbench_RUNS:-4} + cbench_IDIRS=${cbench_IDIRS:-2} + cbench_RUNS=${cbench_RUNS:-2} print_opts cbench_DIR cbench_IDIRS cbench_RUNS @@ -288,14 +296,16 @@ run_compilebench() { [ -e $cbench_DIR/compilebench ] || \ { skip_env "No compilebench build" && return; } - local space=$(df -P $DIR | tail -n 1 | awk '{ print $4 }') - if [ $space -le $((680 * 1024 * cbench_IDIRS)) ]; then - cbench_IDIRS=$(( space / 680 / 1024)) - [ $cbench_IDIRS = 0 ] && \ - skip_env "Need free space atleast 680 Mb, have $space" && return + 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 ]] && + skip_env "Need free space at least 1GB, have $space" && + return + + echo "free space=$space, reducing initial dirs to $cbench_IDIRS" + fi - log free space=$space, reducing initial dirs to $cbench_IDIRS - fi # FIXME: # t-f _base needs to be modifyed to set properly tdir # for new "test_foo" functions names @@ -325,6 +335,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; } @@ -343,17 +354,18 @@ 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 - if [ "$SRUN_PARTITION" ]; then - $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ - -n $((num_clients * mbench_THREADS)) -p $SRUN_PARTITION -- $cmd - else - mpi_run -np $((num_clients * $mbench_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd - fi + # find out if we need to use srun by checking $SRUN_PARTITION + if [ "$SRUN_PARTITION" ]; then + $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ + -n $((num_clients * mbench_THREADS)) \ + -p $SRUN_PARTITION -- $cmd + else + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $mbench_THREADS)) $cmd + fi local rc=$? if [ $rc != 0 ] ; then @@ -392,15 +404,16 @@ run_simul() { local cmd="$SIMUL -d $testdir -n $simul_REP -N $simul_REP" - echo "+ $cmd" - # find out if we need to use srun by checking $SRUN_PARTITION - if [ "$SRUN_PARTITION" ]; then - $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ - -n $((num_clients * simul_THREADS)) -p $SRUN_PARTITION -- $cmd - else - mpi_run -np $((num_clients * simul_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd - fi + echo "+ $cmd" + # find out if we need to use srun by checking $SRUN_PARTITION + if [ "$SRUN_PARTITION" ]; then + $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ + -n $((num_clients * simul_THREADS)) -p $SRUN_PARTITION \ + -- $cmd + else + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * simul_THREADS)) $cmd + fi local rc=$? if [ $rc != 0 ] ; then @@ -447,15 +460,16 @@ run_mdtest() { local cmd="$MDTEST -d $testdir -i $mdtest_iteration -n $mdtest_nFiles" [ $type = "fpp" ] && cmd="$cmd -u" - echo "+ $cmd" - # find out if we need to use srun by checking $SRUN_PARTITION - if [ "$SRUN_PARTITION" ]; then - $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ - -n $((num_clients * mdtest_THREADS)) -p $SRUN_PARTITION -- $cmd - else - mpi_run -np $((num_clients * mdtest_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd - fi + echo "+ $cmd" + # find out if we need to use srun by checking $SRUN_PARTITION + if [ "$SRUN_PARTITION" ]; then + $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ + -n $((num_clients * mdtest_THREADS)) \ + -p $SRUN_PARTITION -- $cmd + else + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * mdtest_THREADS)) $cmd + fi local rc=$? if [ $rc != 0 ] ; then @@ -573,22 +587,25 @@ run_ior() { # -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}g -o $testdir/iorData \ - -t $ior_xferSize -v -w -r -i $ior_iteration -T $ior_DURATION -k" + -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 - if [ "$SRUN_PARTITION" ]; then - $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ - -n $((num_clients * ior_THREADS)) -p $SRUN_PARTITION -- $cmd - else - mpi_run -np $((num_clients * $ior_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd - fi + echo "+ $cmd" + # find out if we need to use srun by checking $SRUN_PARTITION + if [ "$SRUN_PARTITION" ]; then + $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ + -n $((num_clients * ior_THREADS)) -p $SRUN_PARTITION \ + -- $cmd + else + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $ior_THREADS)) $cmd + fi local rc=$? if [ $rc != 0 ] ; then @@ -633,15 +650,16 @@ run_mib() { local cmd="$MIB -t $testdir -s $mib_xferSize -l $mib_xferLimit \ -L $mib_timeLimit -HI -p mib.$(date +%Y%m%d%H%M%S)" - echo "+ $cmd" - # find out if we need to use srun by checking $SRUN_PARTITION - if [ "$SRUN_PARTITION" ]; then - $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ - -n $((num_clients * mib_THREADS)) -p $SRUN_PARTITION -- $cmd - else - mpi_run -np $((num_clients * mib_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd - fi + echo "+ $cmd" + # find out if we need to use srun by checking $SRUN_PARTITION + if [ "$SRUN_PARTITION" ]; then + $SRUN $SRUN_OPTIONS -D $testdir -w $clients -N $num_clients \ + -n $((num_clients * mib_THREADS)) -p $SRUN_PARTITION \ + -- $cmd + else + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * mib_THREADS)) $cmd + fi local rc=$? if [ $rc != 0 ] ; then @@ -680,9 +698,9 @@ run_cascading_rw() { local cmd="$CASC_RW -g -d $testdir -n $casc_REP" - echo "+ $cmd" - mpi_run -np $((num_clients * $casc_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd + echo "+ $cmd" + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $casc_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -722,9 +740,9 @@ run_write_append_truncate() { local cmd="write_append_truncate -n $write_REP $file" - echo "+ $cmd" - mpi_run -np $((num_clients * $write_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd + echo "+ $cmd" + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $write_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -762,9 +780,9 @@ run_write_disjoint() { local cmd="$WRITE_DISJOINT -f $testdir/file -n $wdisjoint_REP" - echo "+ $cmd" - mpi_run -np $((num_clients * $wdisjoint_THREADS)) \ - -machinefile ${MACHINEFILE} $cmd + echo "+ $cmd" + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $wdisjoint_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -794,31 +812,29 @@ 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 - for i in $(seq 12); do - subtest="-t $i" - local cmd="$PARALLEL_GROUPLOCK -g -v -d $testdir $subtest" - echo "+ $cmd" - - mpi_run -np $parallel_grouplock_MINTASKS \ - -machinefile ${MACHINEFILE} $cmd - local rc=$? - if [ $rc != 0 ] ; then - error_noexit "parallel_grouplock subtests $subtest failed! $rc" - else - echo "parallel_grouplock subtests $subtest PASS" - fi - let status=$((status + rc)) - # clear debug to collect one log per one test - do_nodes $(comma_list $(nodes_list)) lctl clear - done - [ $status -eq 0 ] || error "parallel_grouplock status: $status" - rm -rf $testdir + for i in $(seq 12); do + subtest="-t $i" + local cmd="$PARALLEL_GROUPLOCK -g -v -d $testdir $subtest" + echo "+ $cmd" + + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $parallel_grouplock_MINTASKS $cmd + local rc=$? + if [ $rc != 0 ] ; then + error_noexit "parallel_grouplock subtests $subtest " \ + "failed! $rc" + else + echo "parallel_grouplock subtests $subtest PASS" + fi + let status=$((status + rc)) + # clear debug to collect one log per one test + do_nodes $(comma_list $(nodes_list)) lctl clear + done + [ $status -eq 0 ] || error "parallel_grouplock status: $status" + rm -rf $testdir } cleanup_statahead () { @@ -881,7 +897,8 @@ run_statahead () { local cmd="$cmd1 $cmd2" echo "+ $cmd" - mpi_run -np $((num_clients * 32)) -machinefile ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * 32)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -891,7 +908,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