Pārlūkot izejas kodu

Have the repro script add the bandwidth costs to the reported results

Also add a "-n" flag to skip running the experiments, and just use
existing id-channel.csv and token-channel.csv files from a previous run.
Ian Goldberg 9 mēneši atpakaļ
vecāks
revīzija
fe03daab04
1 mainītis faili ar 40 papildinājumiem un 11 dzēšanām
  1. 40 11
      docker/repro

+ 40 - 11
docker/repro

@@ -13,28 +13,55 @@ if [ "$SHRINK_TO_MEM" != "" ]; then
     DOCKER_ENV="$DOCKER_ENV SHRINK_TO_MEM=$SHRINK_TO_MEM"
 fi
 
-./start-docker
-docker exec -it ${TEEMS_DOCKER_PREFIX}teems $DOCKER_ENV ./run_all_experiments.py
-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
+if [ "$1" == "-n" ]; then
+    skip_experiments=1
+else
+    skip_experiments=0
+fi
+
+if [ $skip_experiments == 0 ]; then
+    ./start-docker
+    docker exec -it ${TEEMS_DOCKER_PREFIX}teems $DOCKER_ENV ./run_all_experiments.py
+    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 ) | cut -d, -f1-7
+( 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 ) | cut -d, -f1-7
+( 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 ) | cut -d, -f1-7
+( 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 ) | cut -d, -f1-7
+( 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"
@@ -47,4 +74,6 @@ if [ "$SHRINK_TO_MEM" != "" ]; then
     echo
 fi
 
-./stop-docker >/dev/null
+if [ $skip_experiments == 0 ]; then
+    ./stop-docker >/dev/null
+fi