Whamcloud - gitweb
b=17747
[fs/lustre-release.git] / lustre / tests / mdsrate-lookup-1dir.sh
1 #!/bin/bash
2 #
3 # This test was used in a set of CMD3 tests (cmd3-5 test).
4
5 # Directory lookup retrieval rate single directory 10 million files
6 # 5900 random lookups/sec per client node 62,000 random lookups/sec aggregate
7
8 # In a dir containing 10 million non-striped files the mdsrate Test Program will
9 # perform lookups for 10 minutes. This test can be run from a single node for
10 # #1 and from all nodes for #2 aggregate test to measure lookup performance.
11
12 LUSTRE=${LUSTRE:-`dirname $0`/..}
13 . $LUSTRE/tests/test-framework.sh
14 init_test_env $@
15 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
16 assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN
17
18 MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
19 TESTDIR=$MOUNT
20
21 # Requirements
22 NUM_FILES=${NUM_FILES:-1000000}
23 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
24 SINGLE_TARGET_RATE=5900                  # ops/sec
25 AGGREGATE_TARGET_RATE=62000              # ops/sec
26
27 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
28 CLIENT=$SINGLECLIENT
29 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
30 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
31
32 rm -f $LOG
33
34 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
35
36 log "===== $0 ====== " 
37
38 check_and_setup_lustre
39
40 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
41
42 $LFS setstripe $TESTDIR -c 1
43 get_stripe $TESTDIR
44
45 if [ -n "$NOCREATE" ]; then
46     echo "NOCREATE=$NOCREATE  => no file creation."
47 else
48     log "===== $0 Test preparation: creating ${NUM_FILES} files."
49     echo "Test preparation: creating ${NUM_FILES} files."
50
51     NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
52     NUM_THREADS=$((NUM_CLIENTS * MDSCOUNT))
53     if [ $NUM_CLIENTS -gt 50 ]; then
54         NUM_THREADS=$NUM_CLIENTS
55     fi
56     COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --mknod --dir ${TESTDIR}
57                         --nfiles ${NUM_FILES} --filefmt 'f%%d'"
58     echo "+" ${COMMAND}
59     $MPIRUN -np ${NUM_THREADS} -machinefile ${MACHINEFILE} \
60            ${MPIRUN_OPTIONS} ${COMMAND} 2>&1 
61
62     # No lockup if error occurs on file creation, abort.
63     [ ${PIPESTATUS[0]} != 0 ] && error "mpirun ... mdsrate ... file creation failed, aborting"
64 fi
65
66 COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --lookup --time ${TIME_PERIOD} ${SEED_OPTION}
67         --dir ${TESTDIR} --nfiles ${NUM_FILES} --filefmt 'f%%d'"
68
69 # 1
70 if [ -n "$NOSINGLE" ]; then
71     echo "NO Test for lookups on a single client."
72 else
73     log "===== $0 ### 1 NODE LOOKUPS ###"
74     echo "Running lookups on 1 node(s)."
75     echo "+" ${COMMAND}
76     $MPIRUN -np 1 -machinefile ${MACHINEFILE} \
77         ${MPIRUN_OPTIONS} ${COMMAND} | tee ${LOG}
78
79     if [ ${PIPESTATUS[0]} != 0 ]; then
80         [ -f $LOG ] && cat $LOG
81         error "mpirun ... mdsrate ... failed, aborting"
82     fi
83     check_rate lookup ${SINGLE_TARGET_RATE} 1 ${LOG} || true
84 fi
85
86 # 2
87 if [ -n "$NOMULTI" ]; then
88     echo "NO test for lookups on multiple nodes."
89 else
90     log "===== $0 ### ${NUM_CLIENTS} NODES LOOKUPS ###"
91     echo "Running lookups on ${NUM_CLIENTS} node(s)."
92     echo "+" ${COMMAND}
93     $MPIRUN -np ${NUM_CLIENTS} -machinefile ${MACHINEFILE} \
94         ${MPIRUN_OPTIONS} ${COMMAND} | tee ${LOG}
95
96     if [ ${PIPESTATUS[0]} != 0 ]; then
97         [ -f $LOG ] && cat $LOG
98         error "mpirun ... mdsrate ... failed, aborting"
99     fi
100     check_rate lookup ${AGGREGATE_TARGET_RATE} ${NUM_CLIENTS} ${LOG} || true
101 fi
102
103 equals_msg `basename $0`: test complete, cleaning up
104 rm -f $MACHINEFILE
105 zconf_umount_clients $NODES_TO_USE $MOUNT
106 check_and_cleanup_lustre
107 #rm -f $LOG
108
109 exit 0