change
[IRC.git] / Robust / src / Benchmarks / Recovery / runjava.sh
1 # !/bin/sh
2 BASEDIR=`pwd`
3 LOGDIR=${BASEDIR}
4 DSTM_CONFDIR=${HOME}/research/Robust/src
5 JAVA_DIR=java
6 JVM_DIR=jvm
7 DSM_DIR=dsm
8 ITERATIONS=1
9
10 # killClients <fileName> <# of machines>
11 function killclients {
12   i=1;
13   fileName=$1
14   let "k= $Num";
15   while [ $i -le $k ]; do
16     echo "killing dc-$i ${fileName}"
17     ssh dc-${i} pkill -u jihoonl -f ${fileName}
18     i=`expr $i + 1`
19   done
20 }
21
22 # killonemachine <Benchmark file name> <machine_num>
23 function killonemachine {
24   fileName=$1
25   let "machine= $2";
26   echo "killing dc-$machine";
27   ssh dc-${machine} pkill -u jihoonl -f ${fileName}
28 }
29
30 function runMachines {
31   echo "Running on ${NUM_MACHINE} machines ... "
32   
33   # Start machines
34   echo "Running machines"
35   let "k= $NUM_MACHINE"
36   
37   echo ${BASEDIR}/${BM_DIR} > ~/.tmpdir
38   DIR=`echo ${BASEDIR}\/${BM_DIR}`;
39   echo "DIR = $DIR";
40   
41   # Run machines
42   while [ $k -gt 1 ]; do
43     echo "SSH into dc-${k}"
44     ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin' &
45     k=`expr $k - 1`
46   done
47   
48   echo "Running master machine ... "
49   ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$NUM_MACHINE $BM_ARGS &
50 }
51
52 function runMultiMachineTest {
53 # Run java version
54   echo "Runnning ${BM_NAME}"
55   j=1;
56   BM_DIR=${BM_NAME}
57
58   cd ${BM_DIR}    
59
60   while [ $j -le $ITERATIONS ]; do
61     # run all machines
62     runMachines
63     sleep 10 # wait until all machine run
64     fileName="$BM_NAME.bin";
65     # Kill machines
66     for k in 2 4 6 8
67     do
68       killonemachine $fileName $k
69       sleep 30
70     done
71
72     sleep 1000; # wait the end of execution
73     killclients # kill alive machines
74     sleep 10;
75     j=`expr $j + 1`
76   done
77   cd -
78 }
79
80 echo "---------- Starting Benchmarks ----------"
81 exec < bm_args.txt
82 while read line
83 do
84   BM_NAME=`echo $line | cut -f1 -d":"`
85   BM_ARGS=`echo $line | cut -f2 -d":"`
86
87   # Setup for remote machine
88   echo "" > ~/.bmargs
89   echo "BM_NAME='$BM_NAME'" > ~/.bmargs
90   echo "BM_ARGS='$BM_ARGS'" > ~/.bmargs
91
92   fileName=${BM_NAME}.bin
93   echo "fileName='$fileName'"
94
95   # terminate if it doesn't have parameter
96   let "NUM_MACHINE= $1 + 0";
97
98   if [ $NUM_MACHINE -eq 0 ];
99   then
100     echo "Wrong input"
101     let "Num= 8";
102     killclients $fileName $Num
103     exit 0
104   fi
105
106   echo "BM_NAME= $BM_NAME"
107   echo "BM_ARGS= $BM_ARGS"
108   echo "NUM_M = $NUM_MACHINE"
109   runMultiMachineTest $NUM_MACHINES
110   
111   echo "done run"
112   
113   killclients $fileName
114
115   # Clean up
116   rm ~/.bmargs
117   rm ~/.tmpdir
118 done
119
120 echo "----------- done ------------"
121