X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ffunctions.sh;h=84916b0e0b903aa43d3462068db79c7e6e4e2c7c;hb=ad21703f66c0d013d3cbd2d7f307715ef77864ff;hp=c03974662bbacf399e4aba21150cc89c97a794ad;hpb=f86e9d455edabb5e85a62c78fd4cab580eb4c73e;p=fs%2Flustre-release.git diff --git a/lustre/tests/functions.sh b/lustre/tests/functions.sh index c039746..84916b0 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 @@ -254,6 +259,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,10 +285,11 @@ print_opts () { } run_compilebench() { + # Space estimation: + # compile dir kernel-0 ~1GB + # required space ~1GB * cbench_IDIRS -# Space estimation: -# compile dir kernel-1 680MB -# required space 680MB * cbench_IDIRS = ~1.4 Gb + local dir=${1:-$DIR} cbench_DIR=${cbench_DIR:-""} cbench_IDIRS=${cbench_IDIRS:-2} @@ -284,19 +303,21 @@ 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 # local testdir=$DIR/$tdir - local testdir=$DIR/d0.compilebench + local testdir=$dir/d0.compilebench mkdir -p $testdir local savePWD=$PWD @@ -321,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; } @@ -339,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 @@ -348,8 +370,8 @@ run_metabench() { -n $((num_clients * mbench_THREADS)) \ -p $SRUN_PARTITION -- $cmd else - mpi_run -np $((num_clients * $mbench_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $mbench_THREADS)) $cmd fi local rc=$? @@ -396,8 +418,8 @@ run_simul() { -n $((num_clients * simul_THREADS)) -p $SRUN_PARTITION \ -- $cmd else - mpi_run -np $((num_clients * simul_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * simul_THREADS)) $cmd fi local rc=$? @@ -452,8 +474,8 @@ run_mdtest() { -n $((num_clients * mdtest_THREADS)) \ -p $SRUN_PARTITION -- $cmd else - mpi_run -np $((num_clients * mdtest_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * mdtest_THREADS)) $cmd fi local rc=$? @@ -572,11 +594,13 @@ 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" @@ -586,8 +610,8 @@ run_ior() { -n $((num_clients * ior_THREADS)) -p $SRUN_PARTITION \ -- $cmd else - mpi_run -np $((num_clients * $ior_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $ior_THREADS)) $cmd fi local rc=$? @@ -640,8 +664,8 @@ run_mib() { -n $((num_clients * mib_THREADS)) -p $SRUN_PARTITION \ -- $cmd else - mpi_run -np $((num_clients * mib_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * mib_THREADS)) $cmd fi local rc=$? @@ -682,8 +706,8 @@ run_cascading_rw() { local cmd="$CASC_RW -g -d $testdir -n $casc_REP" echo "+ $cmd" - mpi_run -np $((num_clients * $casc_THREADS)) ${MACHINEFILE_OPTION} \ - ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $casc_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -724,8 +748,8 @@ run_write_append_truncate() { local cmd="write_append_truncate -n $write_REP $file" echo "+ $cmd" - mpi_run -np $((num_clients * $write_THREADS)) ${MACHINEFILE_OPTION} \ - ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $write_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -764,8 +788,8 @@ run_write_disjoint() { local cmd="$WRITE_DISJOINT -f $testdir/file -n $wdisjoint_REP" echo "+ $cmd" - mpi_run -np $((num_clients * $wdisjoint_THREADS)) \ - ${MACHINEFILE_OPTION} ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * $wdisjoint_THREADS)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -795,9 +819,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 @@ -806,8 +827,8 @@ run_parallel_grouplock() { local cmd="$PARALLEL_GROUPLOCK -g -v -d $testdir $subtest" echo "+ $cmd" - mpi_run -np $parallel_grouplock_MINTASKS ${MACHINEFILE_OPTION} \ - ${MACHINEFILE} $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $parallel_grouplock_MINTASKS $cmd local rc=$? if [ $rc != 0 ] ; then error_noexit "parallel_grouplock subtests $subtest " \ @@ -883,8 +904,8 @@ run_statahead () { local cmd="$cmd1 $cmd2" echo "+ $cmd" - mpi_run -np $((num_clients * 32)) ${MACHINEFILE_OPTION} ${MACHINEFILE} \ - $cmd + mpi_run ${MACHINEFILE_OPTION} ${MACHINEFILE} \ + -np $((num_clients * 32)) $cmd local rc=$? if [ $rc != 0 ] ; then @@ -894,7 +915,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