From 4e630228f68eefa6729b9d2ff3c3e7ace2b11f9a Mon Sep 17 00:00:00 2001 From: grev Date: Fri, 29 May 2009 14:37:09 +0000 Subject: [PATCH] b=15266 i=Brian lookup-10dirs cmd3 test_6 --- lustre/tests/Makefile.am | 1 + lustre/tests/mdsrate-lookup-10dirs.sh | 124 ++++++++++++++++++++++++++++++++++ lustre/tests/performance-sanity.sh | 4 +- 3 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 lustre/tests/mdsrate-lookup-10dirs.sh diff --git a/lustre/tests/Makefile.am b/lustre/tests/Makefile.am index 1fea163..237c259 100644 --- a/lustre/tests/Makefile.am +++ b/lustre/tests/Makefile.am @@ -16,6 +16,7 @@ noinst_SCRIPTS += replay-ost-single.sh replay-single.sh run-llog.sh sanityN.sh noinst_SCRIPTS += large-scale.sh runracer replay-vbr.sh noinst_SCRIPTS += performance-sanity.sh mdsrate-create-small.sh noinst_SCRIPTS += mdsrate-create-large.sh mdsrate-lookup-1dir.sh +noinst_SCRIPTS += mdsrate-lookup-10dirs.sh noinst_SCRIPTS += mdsrate-stat-small.sh mdsrate-stat-large.sh noinst_SCRIPTS += lockorder.sh socketclient socketserver runmultiop_bg_pause noinst_SCRIPTS += sanity-sec.sh sanity-gss.sh krb5_login.sh setup_kerberos.sh diff --git a/lustre/tests/mdsrate-lookup-10dirs.sh b/lustre/tests/mdsrate-lookup-10dirs.sh new file mode 100644 index 0000000..b139a64 --- /dev/null +++ b/lustre/tests/mdsrate-lookup-10dirs.sh @@ -0,0 +1,124 @@ +#!/bin/bash +# +# This test was used in a set of CMD3 tests (cmd3-5 test). + +# Directory lookup retrieval rate 10 directories 1 million files each +# 6000 random lookups/sec per client node 62,000 random lookups/sec aggregate +# +# In 10 dirs containing 1 million files each the mdsrate Test Program will +# perform lookups for 10 minutes. This test is run from a single node for +# #1 and from all nodes for #2 aggregate test to measure lookup performance. +# TEst performs lookups across all 10 directories. + +LUSTRE=${LUSTRE:-`dirname $0`/..} +. $LUSTRE/tests/test-framework.sh +init_test_env $@ +. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh} +assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN + +MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines} +# Do not use name [df][0-9]* to avoid cleanup by rm, bug 18045 +TESTDIR=$MOUNT/mdsrate + +# Requirements +NUM_DIRS=${NUM_DIRS:-10} +NUM_FILES=${NUM_FILES:-1000000} +TIME_PERIOD=${TIME_PERIOD:-600} # seconds + +LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log} +CLIENT=$SINGLECLIENT +NODES_TO_USE=${NODES_TO_USE:-$CLIENTS} +NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ }) + +rm -f $LOG + +[ ! -x ${MDSRATE} ] && error "${MDSRATE} not built." + +log "===== $0 ====== " + +check_and_setup_lustre +mkdir -p $TESTDIR +chmod 0777 $TESTDIR + +IFree=$(inodes_available) +if [ $IFree -lt $((NUM_FILES * NUM_DIRS)) ]; then + NUM_FILES=$((IFree / NUM_DIRS)) +fi + +generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile" + +$LFS setstripe $TESTDIR -c 1 +get_stripe $TESTDIR + +DIRfmt="${TESTDIR}/t6-%d" + +if [ -n "$NOCREATE" ]; then + echo "NOCREATE=$NOCREATE => no file creation." +else + # FIXME: does it make sense to add the possibility to unlink dirfmt to mdsrate? + for i in $(seq 0 $NUM_DIRS); do + mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR/t6-$i 'f%%d' --ignore + done + + log "===== $0 Test preparation: creating ${NUM_DIRS} dirs with ${NUM_FILES} files." + + COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod + --ndirs ${NUM_DIRS} --dirfmt '${DIRfmt}' + --nfiles ${NUM_FILES} --filefmt 'f%%d'" + + echo "+" ${COMMAND} + # For files creation we can use -np equal to NUM_DIRS + # This is just a test preparation, does not matter how many threads we use for files creation; + # we just should be aware that NUM_DIRS is less than or equal to the number of threads np + mpi_run -np ${NUM_DIRS} -machinefile ${MACHINEFILE} ${COMMAND} 2>&1 + + # No lookup if error occurs on file creation, abort. + [ ${PIPESTATUS[0]} != 0 ] && error "mdsrate file creation failed, aborting" +fi + +COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --lookup --time ${TIME_PERIOD} ${SEED_OPTION} + --ndirs ${NUM_DIRS} --dirfmt '${DIRfmt}' + --nfiles ${NUM_FILES} --filefmt 'f%%d'" + +# 1 +if [ -n "$NOSINGLE" ]; then + echo "NO Test for lookups on a single client." +else + log "===== $0 ### 1 NODE LOOKUPS ###" + echo "+" ${COMMAND} + mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG} + + if [ ${PIPESTATUS[0]} != 0 ]; then + [ -f $LOG ] && sed -e "s/^/log: /" $LOG + error "mdsrate lookups on a single client failed, aborting" + fi +fi + +# 2 +[ $NUM_CLIENTS -eq 1 ] && NOMULTI=yes +if [ -n "$NOMULTI" ]; then + echo "NO test for lookups on multiple nodes." +else + log "===== $0 ### ${NUM_CLIENTS} NODES LOOKUPS ###" + echo "+" ${COMMAND} + mpi_run -np ${NUM_CLIENTS} -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG} + + if [ ${PIPESTATUS[0]} != 0 ]; then + [ -f $LOG ] && sed -e "s/^/log: /" $LOG + error "mdsrate lookups on multiple nodes failed, aborting" + fi +fi + +equals_msg `basename $0`: test complete, cleaning up +# FIXME: does it make sense to add the possibility to unlink dirfmt to mdsrate? +for i in $(seq 0 $NUM_DIRS); do + mdsrate_cleanup $NUM_CLIENTS $MACHINEFILE $NUM_FILES $TESTDIR/t6-$i 'f%%d' --ignore + rmdir $TESTDIR/t6-$i +done + +rmdir $TESTDIR || true +rm -f $MACHINEFILE +check_and_cleanup_lustre +#rm -f $LOG + +exit 0 diff --git a/lustre/tests/performance-sanity.sh b/lustre/tests/performance-sanity.sh index ce3d2f9..1846fd8 100644 --- a/lustre/tests/performance-sanity.sh +++ b/lustre/tests/performance-sanity.sh @@ -17,8 +17,8 @@ which mpirun > /dev/null 2>&1 || \ FAIL_ON_ERROR=true error "No mpirun program. Aborting." # Skip these tests -# bug number: 15266 15266 15266 -ALWAYS_EXCEPT="1 2 6 $PERFORMANCE_SANITY_EXCEPT" +# bug number: 15266 15266 +ALWAYS_EXCEPT="1 2 $PERFORMANCE_SANITY_EXCEPT" build_test_filter -- 1.8.3.1