5 # ./runjava.sh <num_machine>
11 RECOVERYDIR='recovery'
15 LOGDIR=~/research/Robust/src/Benchmarks/Recovery/runlog
16 DSTMDIR=${HOME}/research/Robust/src/Benchmarks/Prefetch/config
17 MACHINELIST='dc-1.calit2.uci.edu dc-2.calit2.uci.edu dc-3.calit2.uci.edu dc-4.calit2.uci.edu dc-5.calit2.uci.edu dc-6.calit2.uci.edu dc-7.calit2.uci.edu dc-8.calit2.uci.edu'
21 # 1~8 machine id to be killed
28 # killClients <fileName> <# of machines>
29 function killclients {
32 while [ $k -le $2 ]; do
33 echo "killing dc-$k ${fileName}"
34 ssh dc-${k} pkill -u ${USER} -f ${fileName}
39 # killClientsWith USR1 signal <fileName> <# of machines>
40 function killclientswithSignal {
43 while [ $k -le $2 ]; do
44 echo "killing dc-$k ${fileName}"
45 ssh dc-${k} killall -USR1 ${fileName}
50 # killonemachine <Benchmark file name> <machine_num>
51 function killonemachine {
54 echo "killing dc-$machine ${fileName}";
55 ssh dc-${machine} pkill -u ${USER} -f ${fileName}
58 # runmachines <log filename>
59 function runMachines {
60 echo "Running on ${NUM_MACHINE} machines ... "
63 echo "Running machines"
66 DIR=`echo ${BASEDIR}\/${BM_DIR}\/${RECOVERYDIR}`;
70 while [ $k -gt 1 ]; do
71 echo "SSH into dc-${k}"
72 ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin '>> $1'-'$k 2>&1 &
76 echo "Running master machine ... "
77 echo "ssh dc-1 cd $DIR'; ./$BM_NAME.bin master $NUM_MACHINE $BM_ARGS";
78 ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$NUM_MACHINE $BM_ARGS >> $1'-1' 2>&1 &
81 ########### Normal execution
82 # runNormalTest $NUM_MACHINES 1
83 function runNormalTest {
92 while [ $tt -le $NUM_MACHINE ]; do
93 echo "------------------------------- Normal Test $1 ----------------------------" >> log-$tt
107 ########### Failure case
108 function runFailureTest {
112 fName="$BM_NAME.bin";
119 if [ $k -eq 0 ]; then # if k = 0, it is a new test
120 if [ $test_iter -ne 1 ]; then
121 sleep $WAITTIME # wait the end of execution
122 killclients $fName 8 # kill alive machines
124 for outputIter in 1 2 3 4 5 6 7 8
126 echo "----------------------------------------------------------------------------------" >> log-$outputIter
131 for outputIter in 1 2 3 4 5 6 7 8
133 echo "------------------------------- Failure Test $test_iter ----------------------------" >> log-$outputIter
135 echo "------------------------------- Failure Test $test_iter ----------------------------"
137 sleep 10 # wait until all machine run
138 test_iter=`expr $test_iter + 1`
139 else # if k != 0, time to kill machines!
140 echo "------------------------ dc-$k is killed ------------------------" >> log-$k
141 echo "------------------------ dc-$k is killed ------------------------"
142 killonemachine $fName $k
144 let "delay= $RANDOM % $KILLDELAY + 3"
149 killclients $fName 8 # kill alive machines
155 ###runRecovery <num iterations> <num machines> <recovery file name>
157 function runRecovery {
159 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
161 fName="$BM_NAME.bin";
163 while [ $i -le $1 ]; do
165 while [ $tt -le $2 ]; do
166 echo "------------------------------- running Recovery on $2 machines for iter=$i ----------------------------" >> log-$tt
170 #select the correct dstm config file
172 if [ $2 -eq 2 ]; then
173 ln -s ${DSTMDIR}/dstm_2.conf dstm.conf
175 if [ $2 -eq 3 ]; then
176 ln -s ${DSTMDIR}/dstm_3.conf dstm.conf
178 if [ $2 -eq 4 ]; then
179 ln -s ${DSTMDIR}/dstm_4.conf dstm.conf
181 if [ $2 -eq 5 ]; then
182 ln -s ${DSTMDIR}/dstm_5.conf dstm.conf
184 if [ $2 -eq 6 ]; then
185 ln -s ${DSTMDIR}/dstm_6.conf dstm.conf
187 if [ $2 -eq 7 ]; then
188 ln -s ${DSTMDIR}/dstm_7.conf dstm.conf
190 if [ $2 -eq 8 ]; then
191 ln -s ${DSTMDIR}/dstm_8.conf dstm.conf
196 while [ $k -gt 1 ]; do
197 echo "SSH into dc-${k}"
198 ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin '>> log'-'$k 2>&1 &
204 echo "Running master machine ..."
205 ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$2 $BM_ARGS >> log'-1' 2>&1 &
207 echo "Terminating ... "
208 killclientswithSignal $fName $2
216 ###runDSM <num iterations> <num machines> <dsm file name>
220 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
224 while [ $i -le $1 ]; do
226 while [ $tt -le $2 ]; do
227 echo "------------------------------- running DSM on $2 machines for iter=$i ----------------------------" >> log-$tt
231 #select the correct dstm config file
233 if [ $2 -eq 2 ]; then
234 ln -s ${DSTMDIR}/dstm_2.conf dstm.conf
236 if [ $2 -eq 3 ]; then
237 ln -s ${DSTMDIR}/dstm_3.conf dstm.conf
239 if [ $2 -eq 4 ]; then
240 ln -s ${DSTMDIR}/dstm_4.conf dstm.conf
242 if [ $2 -eq 5 ]; then
243 ln -s ${DSTMDIR}/dstm_5.conf dstm.conf
245 if [ $2 -eq 6 ]; then
246 ln -s ${DSTMDIR}/dstm_6.conf dstm.conf
248 if [ $2 -eq 7 ]; then
249 ln -s ${DSTMDIR}/dstm_7.conf dstm.conf
251 if [ $2 -eq 8 ]; then
252 ln -s ${DSTMDIR}/dstm_8.conf dstm.conf
257 while [ $k -gt 1 ]; do
258 echo "SSH into dc-${k}"
259 ssh dc-${k} 'cd '$DIR'; ./'$BM_DSM'.bin '>> log'-'$k 2>&1 &
265 echo "Running master machine ..."
266 ssh dc-1 'cd '$DIR'; ./'$BM_DSM'.bin master '$2 $BM_ARGS >> log'-1' 2>&1 &
268 echo "Terminating ... "
269 killclientswithSignal $fName $2
280 BM_NAME=`echo $line | cut -f1 -d":"`
281 BM_ARGS=`echo $line | cut -f2 -d":"`
284 # Setup for remote machine
285 echo "BM_NAME='$BM_NAME'"
286 echo "BM_ARGS='$BM_ARGS'"
289 fileName=${BM_NAME}.bin
291 # terminate if it doesn't have parameter
292 let "NUM_MACHINE= $nummachines + 0";
294 # echo "====================================== Normal Test =============================="
295 # runNormalTest $NUM_MACHINES 1
296 # echo "================================================================================"
298 # echo "====================================== Failure Test ============================="
299 # runFailureTest $NUM_MACHINES
300 # echo "================================================================================="
302 echo "=============== Running javasingle for ${BM_NAME} on 1 machines ================="
303 javasingle 1 ${BM_NAME}
305 echo "================================================================================="
307 echo "=============== Running recoverysingle for ${BM_NAME} on 1 machines ================="
308 recoverysingle 1 ${BM_NAME}
310 echo "================================================================================="
312 # echo "=============== Running dsmsingle for ${BM_NAME} on 1 machines ================="
313 # dsmsingle 1 ${BM_DSM}
315 # echo "================================================================================="
317 echo "====================================== Recovery Execution Time ============================="
320 echo "------- Running $count threads $BM_NAME recovery on $count machines -----"
321 runRecovery 2 $count ${BM_NAME}
323 echo "================================================================================="
325 # echo "====================================== DSM Execution Time ============================="
328 # echo "------- Running $count threads $BM_NAME dsm on $count machines -----"
329 # runDSM 1 $count $BM_DSM
331 # echo "================================================================================="
335 function javasingle {
337 DIR=`echo ${BASEDIR}\/${2}\/${JAVASINGLEDIR}`;
341 echo "ssh dc-1 cd $DIR'; ./${2}.bin 1 ${BM_ARGS}";
342 while [ $i -lt $1 ]; do
343 /usr/bin/time -f "%e" ./${2}.bin 1 ${BM_ARGS} 2> ${DIR}/tmp
344 cat ${DIR}/tmp >> ${LOGDIR}/${2}_javasingle.txt
350 function recoverysingle {
351 DIR=`echo ${BASEDIR}\/${2}\/${RECOVERYDIR}`;
355 ln -s ${DSTMDIR}/dstm_1.conf dstm.conf
359 while [ $i -lt $1 ]; do
360 echo "Running master machine ... "
361 echo "ssh dc-1 cd $DIR'; ./${2}.bin master 1 ${BM_ARGS}";
362 ssh dc-1 'cd '$DIR'; ./'${2}'.bin master '1 ${BM_ARGS} >> ${LOGDIR}/${2}_recoverysingle.txt 2>&1 &
365 echo "killing dc-1 ${fName}"
366 pkill -u ${USER} -f ${fName}
372 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
376 ln -s ${DSTMDIR}/dstm_1.conf dstm.conf
380 while [ $i -lt $1 ]; do
381 echo "Running master machine ... "
382 echo "ssh dc-1 cd $DIR'; ./${2}.bin master 1 ${BM_ARGS}";
383 ssh dc-1 'cd '$DIR'; ./'${2}'.bin master '1 ${BM_ARGS} >> ${LOGDIR}/${BM_NAME}_dsmsingle.txt 2>&1 &
386 echo "killing dc-1 ${fName}"
387 pkill -u ${USER} -f ${fName}
392 echo "---------- Starting Benchmarks ----------"
395 echo "----------- done ------------"