repro 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. # cd into the directory containing this script (from the bash faq 028)
  3. if [[ $BASH_SOURCE = */* ]]; then
  4. cd -- "${BASH_SOURCE%/*}/" || exit
  5. fi
  6. DOCKER_ENV="env"
  7. if [ "$OVERLOAD_CORES" != "" ]; then
  8. DOCKER_ENV="$DOCKER_ENV OVERLOAD_CORES=$OVERLOAD_CORES"
  9. fi
  10. if [ "$SHRINK_TO_MEM" != "" ]; then
  11. DOCKER_ENV="$DOCKER_ENV SHRINK_TO_MEM=$SHRINK_TO_MEM"
  12. fi
  13. if [ "$1" == "-n" ]; then
  14. skip_experiments=1
  15. else
  16. skip_experiments=0
  17. fi
  18. if [ $skip_experiments == 0 ]; then
  19. ./start-docker || exit 1
  20. docker exec -it ${TEEMS_DOCKER_PREFIX}teems $DOCKER_ENV ./run_all_experiments.py || { ./stop-docker > /dev/null; exit 1; }
  21. docker exec -it ${TEEMS_DOCKER_PREFIX}teems ./logs_to_csv.py Experiments/ID Experiments/id-channel.csv
  22. docker exec -it ${TEEMS_DOCKER_PREFIX}teems ./logs_to_csv.py Experiments/Token Experiments/token-channel.csv
  23. docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments/id-channel.csv id-channel.csv
  24. docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments/token-channel.csv token-channel.csv
  25. # Uncomment the following to preserve all of the raw logs
  26. # docker cp ${TEEMS_DOCKER_PREFIX}teems:/root/teems/Experiments Experiments
  27. fi
  28. BW_Gbps=13
  29. echo
  30. echo "*** Adding latency corresponding to $BW_Gbps Gbps bandwidth between servers ***"
  31. echo
  32. # bash doesn't do floating-point math; perl is installed automatically
  33. # on any Ubuntu installation, while python is not
  34. add_bw() {
  35. perl -lne '@F = split(/,/);
  36. if ($F[0] =~ /\d+/) {
  37. $F[5] = sprintf("%.3f", $F[5] + $F[13] * 8 / ('$BW_Gbps'*1e9));
  38. }
  39. print join(",",@F[0,1,2,3,5,6])'
  40. }
  41. echo "=== Figure 7 ID channel ==="
  42. echo
  43. ( head -1 id-channel.csv ; grep ,4,4,256 id-channel.csv | sort -t, -n -k1,1 ) | add_bw
  44. echo
  45. echo "=== Figure 7 Token channel ==="
  46. echo
  47. ( head -1 token-channel.csv ; grep ,4,4,256 token-channel.csv | sort -t, -n -k1,1 ) | add_bw
  48. echo
  49. echo "=== Figure 8 ID channel ==="
  50. echo
  51. ( head -1 id-channel.csv ; grep ,1,256 id-channel.csv | sort -t, -n -k2,2 ) | add_bw
  52. echo
  53. echo "=== Figure 8 Token channel ==="
  54. echo
  55. ( head -1 token-channel.csv ; grep ,1,256 token-channel.csv | sort -t, -n -k2,2 ) | add_bw
  56. echo
  57. if [ "$OVERLOAD_CORES" == "1" ]; then
  58. echo "*** Reminder: OVERLOAD_CORES is set to 1; performance may be lowered"
  59. echo "*** as compared to the values reported in the paper"
  60. echo
  61. fi
  62. if [ "$SHRINK_TO_MEM" != "" ]; then
  63. echo "*** Reminder: SHRINK_TO_MEM is set to 1; experiments may be smaller"
  64. echo "*** than the ones reported in the paper"
  65. echo
  66. fi
  67. if [ $skip_experiments == 0 ]; then
  68. ./stop-docker >/dev/null
  69. fi