diff --git a/LibOS/shim/test/apps/lighttpd/benchmark-http.sh b/LibOS/shim/test/apps/lighttpd/benchmark-http.sh new file mode 100755 index 00000000..f8e1bf2b --- /dev/null +++ b/LibOS/shim/test/apps/lighttpd/benchmark-http.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +## On Ubuntu, this script requires apache2-utils for the ab binary. +# Run like: ./benchmark-http.sh server +# where server is the host/port running the web server + +declare -A THROUGHPUTS +declare -A LATENCIES +LOOP=5 +DOWNLOAD_HOST=$1 +DOWNLOAD_FILE=random/10K.1.html +REQUESTS=10000 +CONCURRENCY_LIST="1 2 4 8 16 32 64 128 256" +RESULT=result-$(date +%y%m%d-%H%M%S) + +touch $RESULT + +RUN=0 +while [ $RUN -lt $LOOP ] +do + for CONCURRENCY in $CONCURRENCY_LIST + do + rm -f OUTPUT + echo "ab -n $REQUESTS -c $CONCURRENCY http://$DOWNLOAD_HOST/$DOWNLOAD_FILE" + ab -n $REQUESTS -c $CONCURRENCY http://$DOWNLOAD_HOST/$DOWNLOAD_FILE > OUTPUT + + sleep 5 + + THROUGHPUT=$(grep -m1 "Requests per second:" OUTPUT | awk '{ print $4 }') + LATENCY=$(grep -m1 "Time per request:" OUTPUT | awk '{ print $4 }') + THROUGHPUTS[$CONCURRENCY]="${THROUGHPUTS[$CONCURRENCY]} $THROUGHPUT" + LATENCIES[$CONCURRENCY]="${LATENCIES[$CONCURRENCY]} $LATENCY" + echo "concurrency=$CONCURRENCY, throughput=$THROUGHPUT, latency=$LATENCY" + done + RUN=$(expr $RUN + 1) +done + +for CONCURRENCY in $CONCURRENCY_LIST +do + THROUGHPUT=$(echo ${THROUGHPUTS[$CONCURRENCY]} | tr " " "\n" | sort -n | awk '{a[NR]=$0}END{if(NR%2==1)print a[int(NR/2)+1];else print(a[NR/2-1]+a[NR/2])/2}') + LATENCY=$(echo ${LATENCIES[$CONCURRENCY]} | tr " " "\n" | sort -n | awk '{a[NR]=$0}END{if(NR%2==1)print a[int(NR/2)+1];else print(a[NR/2-1]+a[NR/2])/2}') + echo "$THROUGHPUT,$LATENCY" >> $RESULT +done + +echo "Result file: $RESULT"