Whamcloud - gitweb
b=17942
[fs/lustre-release.git] / lustre / tests / mdsrate-create-small.sh
1 #!/bin/bash
2 #
3 # This test was used in a set of CMD3 tests (cmd3-3 test). 
4
5 LUSTRE=${LUSTRE:-`dirname $0`/..}
6 . $LUSTRE/tests/test-framework.sh
7 init_test_env $@
8 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
9
10 assert_env CLIENTS MDSRATE SINGLECLIENT MPIRUN
11
12 MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
13 TESTDIR=$MOUNT
14
15 # Requirements
16 # The default number of stripes per file is set to 1 in test3/run_test.sh.
17 TIME_PERIOD=${TIME_PERIOD:-600}                        # seconds
18 SINGLE_TARGET_RATE=1400                # ops/sec
19 AGGREGATE_TARGET_RATE=10000            # ops/sec
20
21 # Local test variables
22 TESTDIR_SINGLE="${TESTDIR}/single"
23 TESTDIR_MULTI="${TESTDIR}/multi"
24
25 LOG=${TESTSUITELOG:-$TMP/$(basename $0 .sh).log}
26 CLIENT=$SINGLECLIENT
27 NODES_TO_USE=${NODES_TO_USE:-$CLIENTS}
28 NUM_CLIENTS=$(get_node_count ${NODES_TO_USE//,/ })
29 # XXX - this needs to be determined given the number of MDTs and the number
30 #       of clients.
31 THREADS_PER_CLIENT=3                   # threads/client for multi client test
32 if [ $NUM_CLIENTS -gt 50 ]; then
33     THREADS_PER_CLIENT=1
34 fi
35
36 [ ! -x ${MDSRATE} ] && error "${MDSRATE} not built."
37
38 # Make sure we start with a clean slate
39 rm -f ${LOG} PI*
40
41 log "===== $0 ====== " 
42
43 check_and_setup_lustre
44
45 generate_machine_file $NODES_TO_USE $MACHINEFILE || error "can not generate machinefile"
46
47 $LFS setstripe $TESTDIR -i 0 -c 1
48 get_stripe $TESTDIR
49
50 if [ -n "$NOSINGLE" ]; then
51     echo "NO Tests on single client."
52 else
53     if [ -n "$NOCREATE" ]; then
54         echo "NO Test for creates for a single client."
55     else
56         do_node ${CLIENT} "rm -rf $TESTDIR_SINGLE"
57
58         log "===== $0 ### 1 NODE CREATE ###"
59         echo "Running creates on 1 node(s)."
60
61         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
62                             --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
63         echo "+ ${COMMAND}"
64         mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
65
66         if [ ${PIPESTATUS[0]} != 0 ]; then
67         [ -f $LOG ] && cat $LOG
68             error "mpirun ... mdsrate ... failed, aborting"
69         fi
70         check_rate create ${SINGLE_TARGET_RATE} 1 ${LOG} || true
71     fi
72
73     if [ -n "$NOUNLINK" ]; then
74         echo "NO Test for unlinks for a single client."
75     else
76         log "===== $0 ### 1 NODE UNLINK ###"
77         echo "Running unlinks on 1 node(s)."
78
79         let NUM_FILES=${SINGLE_TARGET_RATE}\*${TIME_PERIOD}
80         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
81                      --nfiles ${NUM_FILES} --dir ${TESTDIR_SINGLE} --filefmt 'f%%d'"
82         echo "+ ${COMMAND}"
83         mpi_run -np 1 -machinefile ${MACHINEFILE} ${COMMAND} | tee ${LOG}
84
85         if [ ${PIPESTATUS[0]} != 0 ]; then
86         [ -f $LOG ] && cat $LOG
87             error "mpirun ... mdsrate ... failed, aborting"
88         fi
89         check_rate unlink ${SINGLE_TARGET_RATE} 1 ${LOG} || true
90     fi
91 fi
92
93 if [ -n "$NOMULTI" ]; then
94     echo "NO tests on multiple nodes."
95 else
96     if [ -n "$NOCREATE" ]; then
97         echo "NO test for create on multiple nodes."
98     else
99         do_node $CLIENT rm -rf $TESTDIR_MULTI
100
101         log "===== $0 ### $NUM_CLIENTS NODES CREATE ###"
102         echo "Running creates on ${NUM_CLIENTS} node(s) with $THREADS_PER_CLIENT threads per client."
103
104         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --create --time ${TIME_PERIOD}
105                             --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
106         echo "+ ${COMMAND}"
107         mpi_run -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) -machinefile ${MACHINEFILE} \
108             ${COMMAND} | tee ${LOG}
109         if [ ${PIPESTATUS[0]} != 0 ]; then
110             [ -f $LOG ] && cat $LOG
111             error "mpirun ... mdsrate ... failed, aborting"
112         fi
113         check_rate create ${AGGREGATE_TARGET_RATE} ${NUM_CLIENTS} ${LOG} || true
114     fi
115
116     if [ -n "$NOUNLINK" ]; then
117         echo "NO Test for unlinks multiple nodes."
118     else
119         log "===== $0 ### $NUM_CLIENTS NODES UNLINK ###"
120         echo "Running unlinks on ${NUM_CLIENTS} node(s) with $THREADS_PER_CLIENT threads per client."
121
122         let NUM_FILES=${AGGREGATE_TARGET_RATE}\*${TIME_PERIOD}
123         COMMAND="${MDSRATE} ${MDSRATE_DEBUG} --unlink --time ${TIME_PERIOD}
124                       --nfiles ${NUM_FILES} --dir ${TESTDIR_MULTI} --filefmt 'f%%d'"
125         echo "+ ${COMMAND}"
126         mpi_run -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) -machinefile ${MACHINEFILE} \
127             ${COMMAND} | tee ${LOG}
128         if [ ${PIPESTATUS[0]} != 0 ]; then
129             [ -f $LOG ] && cat $LOG
130             error "mpirun ... mdsrate ... failed, aborting"
131         fi
132         check_rate unlink ${AGGREGATE_TARGET_RATE} ${NUM_CLIENTS} ${LOG} || true
133     fi
134 fi
135
136 equals_msg `basename $0`: test complete, cleaning up
137 rm -f $MACHINEFILE 
138 zconf_umount_clients $NODES_TO_USE $MOUNT
139 check_and_cleanup_lustre
140 #rm -f $LOG
141
142 exit 0