X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fparallel-scale.sh;h=bc208a6267b4e8cf146dda0672ada935ac7fede5;hb=741229ebf7312fa72631f4b265d22b0b0904929d;hp=9e816c79a8c027c3e4a6f1457326e93bca900f7e;hpb=a1c6df3c26adf5ea4a604d4736d648a2014ddc10;p=fs%2Flustre-release.git diff --git a/lustre/tests/parallel-scale.sh b/lustre/tests/parallel-scale.sh index 9e816c7..bc208a6 100644 --- a/lustre/tests/parallel-scale.sh +++ b/lustre/tests/parallel-scale.sh @@ -6,9 +6,10 @@ LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} . $LUSTRE/tests/test-framework.sh init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +init_logging # bug 20670 -ALWAYS_EXCEPT="parallel_grouplock $PARALLEL_SCALE_EXCEPT" +ALWAYS_EXCEPT="parallel_grouplock $PARALLEL_SCALE_EXCEPT" # # compilbench @@ -170,8 +171,7 @@ test_metabench() { # FIXME # Need space estimation here. - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts METABENCH clients mbench_NFILES mbench_THREADS @@ -196,6 +196,11 @@ test_metabench() { run_test metabench "metabench" test_simul() { + if [ "$NFSCLIENT" ]; then + skip "skipped for NFSCLIENT mode" + return + fi + [ x$SIMUL = x ] && { skip_env "simul not found" && return; } @@ -207,8 +212,7 @@ test_simul() { # FIXME # Need space estimation here. - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts SIMUL clients simul_REP simul_THREADS @@ -248,22 +252,42 @@ test_connectathon() { local savePWD=$PWD cd $cnt_DIR - # -f a quick functionality test - # -a run basic, general, special, and lock tests + # + # cthon options (must be in this order) + # # -N numpasses - will be passed to the runtests script. This argument # is optional. It specifies the number of times to run # through the tests. + # + # One of these test types + # -b basic + # -g general + # -s special + # -l lock + # -a all of the above + # + # -f a quick functionality test + # - local cmd="./runtests -N $cnt_NRUN -a -f $testdir" - - log "$cmd" - - local rc=0 - eval $cmd - rc=$? + tests="-b -g -s" + # Include lock tests unless we're running on nfsv4 + local fstype=$(df -TP $testdir | awk 'NR==2 {print $2}') + echo "$testdir: $fstype" + if [[ $fstype != "nfs4" ]]; then + tests="$tests -l" + fi + echo "tests: $tests" + for test in $tests; do + local cmd="./runtests -N $cnt_NRUN $test -f $testdir" + local rc=0 + + log "$cmd" + eval $cmd + rc=$? + [ $rc = 0 ] || error "connectathon failed: $rc" + done cd $savePWD - [ $rc = 0 ] || error "connectathon failed: $rc" rm -rf $testdir } run_test connectathon "connectathon" @@ -288,8 +312,7 @@ test_ior() { echo "free space=$space, Need: $num_clients x $ior_THREADS x $ior_blockSize Gb (blockSize reduced to $ior_blockSize Gb)" fi - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts IOR ior_THREADS ior_DURATION MACHINEFILE @@ -297,7 +320,13 @@ test_ior() { mkdir -p $testdir # mpi_run uses mpiuser chmod 0777 $testdir - + if [ "$NFSCLIENT" ]; then + setstripe_nfsserver $testdir -c -1 || + { error "setstripe on nfsserver failed" && return 1; } + else + $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 @@ -320,6 +349,11 @@ test_ior() { run_test ior "ior" test_cascading_rw() { + if [ "$NFSCLIENT" ]; then + skip "skipped for NFSCLIENT mode" + return + fi + [ x$CASC_RW = x ] && { skip_env "cascading_rw not found" && return; } @@ -331,8 +365,7 @@ test_cascading_rw() { # FIXME # Need space estimation here. - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts CASC_RW clients casc_THREADS casc_REP MACHINEFILE @@ -358,6 +391,11 @@ test_cascading_rw() { run_test cascading_rw "cascading_rw" test_write_append_truncate() { + if [ "$NFSCLIENT" ]; then + skip "skipped for NFSCLIENT mode" + return + fi + # location is lustre/tests dir if ! which write_append_truncate > /dev/null 2>&1 ; then skip_env "write_append_truncate not found" @@ -372,8 +410,7 @@ test_write_append_truncate() { # FIXME # Need space estimation here. - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? local testdir=$DIR/d0.write_append_truncate local file=$testdir/f0.wat @@ -399,6 +436,11 @@ test_write_append_truncate() { run_test write_append_truncate "write_append_truncate" test_write_disjoint() { + if [ "$NFSCLIENT" ]; then + skip "skipped for NFSCLIENT mode" + return + fi + [ x$WRITE_DISJOINT = x ] && { skip_env "write_disjoint not found" && return; } @@ -410,8 +452,7 @@ test_write_disjoint() { # FIXME # Need space estimation here. - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts WRITE_DISJOINT clients wdisjoint_THREADS wdisjoint_REP MACHINEFILE local testdir=$DIR/d0.write_disjoint @@ -433,6 +474,11 @@ test_write_disjoint() { run_test write_disjoint "write_disjoint" test_parallel_grouplock() { + if [ "$NFSCLIENT" ]; then + skip "skipped for NFSCLIENT mode" + return + fi + [ x$PARALLEL_GROUPLOCK = x ] && { skip "PARALLEL_GROUPLOCK not found" && return; } @@ -441,8 +487,7 @@ test_parallel_grouplock() { local num_clients=$(get_node_count ${clients//,/ }) - generate_machine_file $clients $MACHINEFILE || \ - error "can not generate machinefile $MACHINEFILE" + generate_machine_file $clients $MACHINEFILE || return $? print_opts clients parallel_grouplock_MINTASKS MACHINEFILE @@ -478,6 +523,103 @@ test_parallel_grouplock() { } run_test parallel_grouplock "parallel_grouplock" +statahead_NUMMNTPTS=${statahead_NUMMNTPTS:-5} +statahead_NUMFILES=${statahead_NUMFILES:-500000} + +cleanup_statahead () { + trap 0 + + local clients=$1 + local mntpt_root=$2 + local num_mntpts=$3 + + for i in $(seq 0 $num_mntpts);do + zconf_umount_clients $clients ${mntpt_root}$i || + error_exit "Failed to umount lustre on ${mntpt_root}$i" + done +} + +test_statahead () { + if [[ -n $NFSCLIENT ]]; then + skip "Statahead testing is not supported on NFS clients." + return 0 + fi + + [ x$MDSRATE = x ] && + { skip_env "mdsrate not found" && return; } + + local clients=$CLIENTS + [ -z $clients ] && clients=$(hostname) + + local num_clients=$(get_node_count ${clients//,/ }) + + generate_machine_file $clients $MACHINEFILE || return $? + + print_opts MDSRATE clients statahead_NUMMNTPTS statahead_NUMFILES + + # create large dir + + # do not use default "d[0-9]*" dir name + # to avoid of rm $statahead_NUMFILES (500k) files in t-f cleanup + local dir=dstatahead + local testdir=$DIR/$dir + + # cleanup only if dir exists + # cleanup only $statahead_NUMFILES number of files + # ignore the other files created by someone else + [ -d $testdir ] && + mdsrate_cleanup $((num_clients * 32)) $MACHINEFILE $statahead_NUMFILES $testdir 'f%%d' --ignore + + mkdir -p $testdir + # mpi_run uses mpiuser + chmod 0777 $testdir + + local num_files=$statahead_NUMFILES + + local IFree=$(inodes_available) + if [ $IFree -lt $num_files ]; then + num_files=$IFree + fi + + cancel_lru_locks mdc + + local cmd="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir $testdir --nfiles $num_files --filefmt 'f%%d'" + echo "+ $cmd" + + mpi_run -np $((num_clients * 32)) -machinefile ${MACHINEFILE} $cmd + + local rc=$? + if [ $rc != 0 ] ; then + error "mdsrate failed to create $rc" + return $rc + fi + + local num_mntpts=$statahead_NUMMNTPTS + local mntpt_root=$TMP/mntpt/lustre + mntopts=${MNTOPTSTATAHEAD:-$MOUNTOPT} + + echo "Mounting $num_mntpts lustre clients starts on $clients" + trap "cleanup_statahead $clients $mntpt_root $num_mntpts" EXIT ERR + for i in $(seq 0 $num_mntpts); do + zconf_mount_clients $clients ${mntpt_root}$i $mntopts || + error_exit "Failed to mount lustre on ${mntpt_root}$i on $clients" + done + + do_rpc_nodes $clients cancel_lru_locks mdc + + do_rpc_nodes $clients do_ls $mntpt_root $num_mntpts $dir + + mdsrate_cleanup $((num_clients * 32)) $MACHINEFILE $num_files $testdir 'f%%d' --ignore + + # use rm instead of rmdir because of + # testdir could contain the files created by someone else, + # or by previous run where is num_files prev > num_files current + rm -rf $testdir + cleanup_statahead $clients $mntpt_root $num_mntpts +} + +run_test statahead "statahead test, multiple clients" + equals_msg `basename $0`: test complete, cleaning up check_and_cleanup_lustre [ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true