blob: 409351f8f5566edeb69890538bd40a01313b36ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
#!/bin/sh
# $Header$
# set -x
set +x
[ -n "$WEBSTONEROOT" ] || WEBSTONEROOT=`pwd`/../
case $# in
1)
FILELIST=$1
;;
*)
FILELIST=$WEBSTONEROOT/conf/filelist
;;
esac
# load configurations
. $WEBSTONEROOT/conf/testbed
[ -n "$DEBUG" ] && set +x
# check variables
[ -n "$ITERATIONS" ] || ITERATIONS="1"
[ -n "$MINCLIENTS" ] || MINCLIENTS="1"
[ -n "$MAXCLIENTS" ] || MAXCLIENTS="1"
[ -n "$CLIENTINCR" ] || CLIENTINCR="1"
[ -n "$TIMEPERRUN" ] || TIMEPERRUN="1"
# don't care about PROXYSERVER
[ -n "$SERVER" ] || SERVER="www"
[ -n "$PORTNO" ] || PORTNO="80"
# [ -n "$SERVERINFO" ] || SERVERINFO="uname -a"
# OSTUNINGFILES
# WEBSERVERDIR
# WEBDOCDIR
# WEBSERVERTUNINGFILES
[ -n "$CLIENTS" ] || CLIENTS="localhost"
[ -n "$CLIENTACCOUNT" ] || CLIENTACCOUNT=$USER
[ -n "$CLIENTPASSWORD" ] || CLIENTPASSWORD=$CLIENTACCOUNT
# [ -n "$CLIENTINFO" ] || CLIENTINFO="uname -a"
[ -n "$TMPDIR" ] || TMPDIR="/tmp"
[ -n "$RCP" ] || RCP="rcp"
[ -n "$RSH" ] || RSH="rsh"
export ITERATIONS MINCLIENTS MAXCLIENTS CLIENTINCR TIMEPERRUN
export SERVER PORTNO SERVERINFO
export CLIENTS CLIENTACCOUNT CLIENTPASSWORD CLIENTINFO
export TMPDIR RCP RSH
echo "Clients: " $CLIENTS
#
# Estimate run time
#
NUMCLIENTHOSTS=`echo $CLIENTS | wc -w`
TRIALS=`expr 1 + \( $MAXCLIENTS - $MINCLIENTS \) / $CLIENTINCR`
RUNTIME=`expr 60 \* $ITERATIONS \* $TRIALS \* $TIMEPERRUN`
RUNTIME=`expr $RUNTIME + $TRIALS \* \( $MAXCLIENTS + $MINCLIENTS \) \
/ \( 2 \* $NUMCLIENTHOSTS \)`
echo "Estimated run time:" `expr $RUNTIME / 3600` "hours" \
`expr $RUNTIME % 3600 / 60` "minutes"
#
# Checking for valid set of benchmark files to retrieve
#
#if [ -z "$PROXYSERVER" ]
#then
# echo "Checking for a valid set of benchmark files"
# CHECKLISTTMP=$TMPDIR/webstone-checkfilelist.$$
# rm -f $CHECKFILELISTTMP
# $WEBSTONEROOT/bin/checkfilelist $SERVER $PORTNO $FILELIST > $CHECKLISTTMP 2>&1
# if [ `grep -c ' 4[0-9][0-9] '< $CHECKLISTTMP` -gt 0 ]
# then
# echo "ERROR: not all files in filelist are on server:"
# echo "----- checkfilelist results -----"
# cat $CHECKLISTTMP
# echo "----- checkfilelist results -----"
# rm -f $CHECKLISTTMP
# exit 1
# else
# echo "OK: All files found"
# fi
# rm -f $CHECKLISTTMP
#fi
# end if $PROXYSERVER
#
# distribute webclient binary
#
for i in $CLIENTS
do
$RCP $WEBSTONEROOT/bin/webclient $i:$TMPDIR #/usr/local/bin
done
# BEGIN iterations
J=1
while [ $J -le $ITERATIONS ]
do
NUMCLIENTS=$MINCLIENTS
while [ $NUMCLIENTS -le $MAXCLIENTS ]
do
echo "***** Iteration $J, Total clients "`expr $NUMCLIENTS`" **********"
date
TIMESTAMP=`date +"%y%m%d_%H%M"`
LOGDIR=$WEBSTONEROOT/bin/runs/$TIMESTAMP
#
# nuke debug files
#
for client in $CLIENTS
do
$RSH $client "rm /tmp/webstone-debug*" > /dev/null 2>&1
done
mkdir -p $LOGDIR
rm -f $LOGDIR/config
touch $LOGDIR/config
CLIENTSPERHOST=`expr $NUMCLIENTS / $NUMCLIENTHOSTS`
EXTRACLIENTS=`expr $NUMCLIENTS % $NUMCLIENTHOSTS`
for i in $CLIENTS
do
if [ $EXTRACLIENTS -gt 0 ]
then
echo "$i $CLIENTACCOUNT $CLIENTPASSWORD `expr $CLIENTSPERHOST + 1`" \
>> $LOGDIR/config
EXTRACLIENTS=`expr $EXTRACLIENTS - 1`
else
echo "$i $CLIENTACCOUNT $CLIENTPASSWORD $CLIENTSPERHOST" \
>> $LOGDIR/config
fi
done
cp $FILELIST $LOGDIR/`basename $FILELIST`
#
# Put test configuration files on clients
#
for i in $CLIENTS localhost
do
$RSH $i "rm -f $TMPDIR/config $TMPDIR/`basename $FILELIST`"
$RCP $LOGDIR/config $i:$TMPDIR/config
$RCP $LOGDIR/`basename $FILELIST` $i:$TMPDIR/filelist
done
#
# Get starting configuration and stats from each participant
#
$RSH $SERVER "$SERVERINFO" > $LOGDIR/hardware.$SERVER 2>&1
for i in $CLIENTS
do
$RSH $i "$CLIENTINFO" > $LOGDIR/hardware.$i 2>&1
done
# set -x
for i in $OSTUNINGFILES $WEBSERVERTUNINGFILES
do
$RCP $SERVER:$i $LOGDIR
done
set +x
#
# Run benchmark
#
date
CMD="$WEBSTONEROOT/bin/webmaster -v -u $TMPDIR/filelist"
CMD=$CMD" -f $TMPDIR/config -l $TIMEPERRUN"
[ -n "$SERVER" ] && CMD=$CMD" -w $SERVER"
[ -n "$PORTNO" ] && CMD=$CMD" -p $PORTNO"
[ -n "$PROXYSERVER" ] && CMD=$CMD" -P $PROXYSERVER"
[ -n "$DEBUG" ] && CMD=$CMD" -d"
echo $CMD
# dump environment into $LOGDIR
rm -rf $LOGDIR/controller.env
env > $LOGDIR/controller.env
$CMD | tee $LOGDIR/run
#
# Get ending configuration and stats from each participant
#
date
#for i in $SERVER $CLIENTS
#do
#$WEBSTONEROOT/bin/getstats $i > $LOGDIR/end.$i 2>&1
#done
#date
NUMCLIENTS=`expr $NUMCLIENTS + $CLIENTINCR`
done
# while NUMCLIENTS
J=`expr $J + 1`
done
# while J
# end
|