#!/bin/bash # cd into the directory containing this script (from the bash faq 028) if [[ $BASH_SOURCE = */* ]]; then cd -- "${BASH_SOURCE%/*}/" || exit fi DOCKER_ENV="env" if [ "$OVERLOAD_CORES" != "" ]; then DOCKER_ENV="$DOCKER_ENV OVERLOAD_CORES=$OVERLOAD_CORES" fi if [ "$SHRINK_TO_MEM" != "" ]; then DOCKER_ENV="$DOCKER_ENV SHRINK_TO_MEM=$SHRINK_TO_MEM" fi if [ "$1" == "-n" ]; then skip_experiments=1 else skip_experiments=0 fi if [ $skip_experiments == 0 ]; then ./start-docker || exit 1 docker exec -it ${TEEMS_DOCKER_PREFIX}teems $DOCKER_ENV ./run_all_experiments.py || { ./stop-docker > /dev/null; exit 1; } docker exec -it ${TEEMS_DOCKER_PREFIX}teems ./logs_to_csv.py Experiments/ID Experiments/id-channel.csv docker exec -it ${TEEMS_DOCKER_PREFIX}teems ./logs_to_csv.py Experiments/Token Experiments/token-channel.csv docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments/id-channel.csv id-channel.csv docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments/token-channel.csv token-channel.csv # Uncomment the following to preserve all of the raw logs # docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments Experiments fi BW_Gbps=13 echo echo "*** Adding latency corresponding to $BW_Gbps Gbps bandwidth between servers ***" echo # bash doesn't do floating-point math; perl is installed automatically # on any Ubuntu installation, while python is not add_bw() { perl -lne '@F = split(/,/); if ($F[0] =~ /\d+/) { $F[5] = sprintf("%.3f", $F[5] + $F[13] * 8 / ('$BW_Gbps'*1e9)); } print join(",",@F[0,1,2,3,5,6])' } echo "=== Figure 7 ID channel ===" echo ( head -1 id-channel.csv ; grep ,4,4,256 id-channel.csv | sort -t, -n -k1,1 ) | add_bw echo echo "=== Figure 7 Token channel ===" echo ( head -1 token-channel.csv ; grep ,4,4,256 token-channel.csv | sort -t, -n -k1,1 ) | add_bw echo echo "=== Figure 8 ID channel ===" echo ( head -1 id-channel.csv ; grep ,1,256 id-channel.csv | sort -t, -n -k2,2 ) | add_bw echo echo "=== Figure 8 Token channel ===" echo ( head -1 token-channel.csv ; grep ,1,256 token-channel.csv | sort -t, -n -k2,2 ) | add_bw echo if [ "$OVERLOAD_CORES" == "1" ]; then echo "*** Reminder: OVERLOAD_CORES is set to 1; performance may be lowered" echo "*** as compared to the values reported in the paper" echo fi if [ "$SHRINK_TO_MEM" != "" ]; then echo "*** Reminder: SHRINK_TO_MEM is set to 1; experiments may be smaller" echo "*** than the ones reported in the paper" echo fi if [ $skip_experiments == 0 ]; then ./stop-docker >/dev/null fi