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
29 #ORDER=( 0 1 3 5 7 8 2 );
32 # killClients <fileName> <# of machines>
33 function killclients {
36 while [ $k -le $2 ]; do
37 echo "killing dc-$k ${fileName}"
38 ssh dc-${k} pkill -u ${USER} -f ${fileName}
43 # killClientsWith USR1 signal <fileName> <# of machines>
44 function killclientswithSignal {
47 while [ $k -le $2 ]; do
48 echo "killing dc-$k ${fileName}"
49 ssh dc-${k} killall -USR1 ${fileName}
54 # killonemachine <Benchmark file name> <machine_num>
55 function killonemachine {
58 echo "killing dc-$machine ${fileName}";
59 #ssh dc-${machine} pkill -u ${USER} -f ${fileName}
60 ssh dc-${machine} killall -USR1 ${fileName}
63 # runmachines <log filename>
64 function runMachines {
65 echo "Running on ${NUM_MACHINE} machines ... "
68 echo "Running machines"
71 DIR=`echo ${BASEDIR}\/${BM_DIR}\/${RECOVERYDIR}`;
75 while [ $k -gt 1 ]; do
76 echo "SSH into dc-${k}"
77 ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin '>> log'-'$k 2>&1 &
82 echo "Running master machine ... "
83 echo "ssh dc-1 cd $DIR'; ./$BM_NAME.bin master $NUM_MACHINE $BM_ARGS";
84 ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$NUM_MACHINE $BM_ARGS >> log'-1' 2>&1 &
87 ########### Normal execution
88 # runNormalTest $NUM_MACHINES 1
89 function runNormalTest {
98 while [ $tt -le $NUM_MACHINE ]; do
99 echo "------------------------------- Normal Test $1 ----------------------------" >> log-$tt
107 killclientswithSignal $fName $2
108 #killclients $fName 8
113 ########### Failure case
114 function runFailureTest {
118 fName="$BM_NAME.bin";
125 if [ $k -eq 0 ]; then # if k = 0, it is a new test
126 if [ $test_iter -ne 1 ]; then
127 sleep $WAITTIME # wait the end of execution
128 killclients $fName 8 # kill alive machines
130 for outputIter in 1 2 3 4 5 6 7 8
132 echo "----------------------------------------------------------------------------------" >> log-$outputIter
137 for outputIter in 1 2 3 4 5 6 7 8
139 echo "------------------------------- Failure Test $test_iter ----------------------------" >> log-$outputIter
141 echo "------------------------------- Failure Test $test_iter ----------------------------"
143 sleep 10 # wait until all machine run
144 test_iter=`expr $test_iter + 1`
145 else # if k != 0, time to kill machines!
146 echo "------------------------ dc-$k is killed ------------------------" >> log-$k
147 echo "------------------------ dc-$k is killed ------------------------"
148 killonemachine $fName $k
150 let "delay= $RANDOM % $KILLDELAY + 4"
155 # killclients $fName 8 # kill alive machines
156 killclientswithSignal $fName 8
162 ###runRecovery <num iterations> <num machines> <recovery file name>
164 function runRecovery {
166 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
168 fName="$BM_NAME.bin";
170 while [ $i -le $1 ]; do
172 while [ $tt -le $2 ]; do
173 echo "------------------------------- running Recovery on $2 machines for iter=$i ----------------------------" >> log-$tt
177 #select the correct dstm config file
179 if [ $2 -eq 2 ]; then
180 ln -s ${DSTMDIR}/dstm_2.conf dstm.conf
182 if [ $2 -eq 3 ]; then
183 ln -s ${DSTMDIR}/dstm_3.conf dstm.conf
185 if [ $2 -eq 4 ]; then
186 ln -s ${DSTMDIR}/dstm_4.conf dstm.conf
188 if [ $2 -eq 5 ]; then
189 ln -s ${DSTMDIR}/dstm_5.conf dstm.conf
191 if [ $2 -eq 6 ]; then
192 ln -s ${DSTMDIR}/dstm_6.conf dstm.conf
194 if [ $2 -eq 7 ]; then
195 ln -s ${DSTMDIR}/dstm_7.conf dstm.conf
197 if [ $2 -eq 8 ]; then
198 ln -s ${DSTMDIR}/dstm_8.conf dstm.conf
203 while [ $k -gt 1 ]; do
204 echo "SSH into dc-${k}"
205 ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin '>> log'-'$k 2>&1 &
211 echo "Running master machine ..."
212 ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$2 $BM_ARGS >> log'-1' 2>&1 &
214 echo "Terminating ... "
215 killclientswithSignal $fName $2
223 ###runDSM <num iterations> <num machines> <dsm file name>
227 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
231 while [ $i -le $1 ]; do
233 while [ $tt -le $2 ]; do
234 echo "------------------------------- running DSM on $2 machines for iter=$i ----------------------------" >> log-$tt
238 #select the correct dstm config file
240 if [ $2 -eq 2 ]; then
241 ln -s ${DSTMDIR}/dstm_2.conf dstm.conf
243 if [ $2 -eq 3 ]; then
244 ln -s ${DSTMDIR}/dstm_3.conf dstm.conf
246 if [ $2 -eq 4 ]; then
247 ln -s ${DSTMDIR}/dstm_4.conf dstm.conf
249 if [ $2 -eq 5 ]; then
250 ln -s ${DSTMDIR}/dstm_5.conf dstm.conf
252 if [ $2 -eq 6 ]; then
253 ln -s ${DSTMDIR}/dstm_6.conf dstm.conf
255 if [ $2 -eq 7 ]; then
256 ln -s ${DSTMDIR}/dstm_7.conf dstm.conf
258 if [ $2 -eq 8 ]; then
259 ln -s ${DSTMDIR}/dstm_8.conf dstm.conf
264 while [ $k -gt 1 ]; do
265 echo "SSH into dc-${k}"
266 ssh dc-${k} 'cd '$DIR'; ./'$BM_DSM'.bin '>> log'-'$k 2>&1 &
272 echo "Running master machine ..."
273 ssh dc-1 'cd '$DIR'; ./'$BM_DSM'.bin master '$2 $BM_ARGS >> log'-1' 2>&1 &
275 echo "Terminating ... "
276 killclientswithSignal $fName $2
287 BM_NAME=`echo $line | cut -f1 -d":"`
288 BM_ARGS=`echo $line | cut -f2 -d":"`
291 # Setup for remote machine
292 echo "BM_NAME='$BM_NAME'"
293 echo "BM_ARGS='$BM_ARGS'"
296 fileName=${BM_NAME}.bin
298 # terminate if it doesn't have parameter
299 let "NUM_MACHINE= $nummachines + 0";
301 echo "====================================== Normal Test =============================="
302 runNormalTest $NUM_MACHINES 1
303 echo "================================================================================"
305 echo "====================================== Failure Test ============================="
306 runFailureTest $NUM_MACHINES
307 echo "================================================================================="
309 # echo "=============== Running javasingle for ${BM_NAME} on 1 machines ================="
310 # javasingle 1 ${BM_NAME}
312 # echo "================================================================================="
314 # echo "=============== Running recoverysingle for ${BM_NAME} on 1 machines ================="
315 # recoverysingle 2 ${BM_NAME}
317 # echo "================================================================================="
319 # echo "=============== Running dsmsingle for ${BM_NAME} on 1 machines ================="
320 # dsmsingle 1 ${BM_DSM}
322 # echo "================================================================================="
324 # echo "====================================== Recovery Execution Time ============================="
325 # for count in 2 4 6 8
327 # echo "------- Running $count threads $BM_NAME recovery on $count machines -----"
328 # runRecovery 1 $count ${BM_NAME}
330 # echo "================================================================================="
332 # echo "====================================== DSM Execution Time ============================="
333 # for count in 2 4 6 8
335 # echo "------- Running $count threads $BM_NAME dsm on $count machines -----"
336 # runDSM 1 $count $BM_DSM
338 # echo "================================================================================="
342 function javasingle {
344 DIR=`echo ${BASEDIR}\/${2}\/${JAVASINGLEDIR}`;
348 echo "ssh dc-1 cd $DIR'; ./${2}.bin 1 ${BM_ARGS}";
349 while [ $i -lt $1 ]; do
350 /usr/bin/time -f "%e" ./${2}.bin 1 ${BM_ARGS} 2> ${DIR}/tmp
351 cat ${DIR}/tmp >> ${LOGDIR}/${2}_javasingle.txt
357 function recoverysingle {
358 DIR=`echo ${BASEDIR}\/${2}\/${RECOVERYDIR}`;
362 ln -s ${DSTMDIR}/dstm_1.conf dstm.conf
366 while [ $i -lt $1 ]; do
367 echo "Running master machine ... "
368 echo "ssh dc-1 cd $DIR'; ./${2}.bin master 1 ${BM_ARGS}";
369 ssh dc-1 'cd '$DIR'; ./'${2}'.bin master '1 ${BM_ARGS} >> ${LOGDIR}/${2}_recoverysingle.txt 2>&1 &
372 echo "killing dc-1 ${fName}"
373 pkill -u ${USER} -f ${fName}
379 DIR=`echo ${BASEDIR}\/${BM_NAME}\/${RECOVERYDIR}`;
383 ln -s ${DSTMDIR}/dstm_1.conf dstm.conf
387 while [ $i -lt $1 ]; do
388 echo "Running master machine ... "
389 echo "ssh dc-1 cd $DIR'; ./${2}.bin master 1 ${BM_ARGS}";
390 ssh dc-1 'cd '$DIR'; ./'${2}'.bin master '1 ${BM_ARGS} >> ${LOGDIR}/${BM_NAME}_dsmsingle.txt 2>&1 &
393 echo "killing dc-1 ${fName}"
394 pkill -u ${USER} -f ${fName}
399 echo "---------- Starting Benchmarks ----------"
402 echo "----------- done ------------"