run-experiment 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. # Get the IP addresses
  3. p0addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' prac_p0)
  4. p1addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' prac_p1)
  5. # Gather options and arguments
  6. preproc=0
  7. opts=""
  8. while getopts paot:ex arg; do
  9. opts+=" -${arg} ${OPTARG}"
  10. if [ "$arg" = "p" -o "$arg" = "a" ]; then
  11. preproc=1
  12. fi
  13. done
  14. shift $((OPTIND-1))
  15. # Get the number of cores usable by each party
  16. ncores_p0=1
  17. ncores_p1=1
  18. ncores_p2=1
  19. if [ "$whichexps" != "none" ]; then
  20. ncores_p0=`docker exec -i prac_p0 $PRAC_NUMA_P0 nproc 2>/dev/null`
  21. ncores_p1=`docker exec -i prac_p1 $PRAC_NUMA_P1 nproc 2>/dev/null`
  22. ncores_p2=`docker exec -i prac_p2 $PRAC_NUMA_P2 nproc 2>/dev/null`
  23. fi
  24. ptarg_p0=""
  25. ptarg_p1=""
  26. ptarg_p2=""
  27. targ_p0=""
  28. targ_p1=""
  29. targ_p2=""
  30. if [ "$preproc" = 1 ]; then
  31. ptarg_p0="p:${ncores_p0}"
  32. ptarg_p1="p:${ncores_p1}"
  33. ptarg_p2="p:${ncores_p2}"
  34. else
  35. targ_p0="-t ${ncores_p0}"
  36. targ_p1="-t ${ncores_p1}"
  37. targ_p2="-t ${ncores_p2}"
  38. fi
  39. echo ===== Running prac $opts -- $*
  40. date "+===== Start %s %F %T"
  41. # Run, saving the output
  42. savefile0=$$.p0.out
  43. savefile1=$$.p1.out
  44. savefile2=$$.p2.out
  45. docker exec -w /root/prac prac_p0 bash -c "$PRAC_NUMA_P0 stdbuf -o 0 ./prac $opts $targ_p0 0 $* $ptarg_p0 > $savefile0 2>&1" &
  46. docker exec -w /root/prac prac_p1 bash -c "$PRAC_NUMA_P1 stdbuf -o 0 ./prac $opts $targ_p1 1 $p0addr $* $ptarg_p1 > $savefile1 2>&1" &
  47. docker exec -w /root/prac prac_p2 bash -c "$PRAC_NUMA_P2 stdbuf -o 0 ./prac $opts $targ_p2 2 $p0addr $p1addr $* $ptarg_p2 > $savefile2 2>&1" &
  48. wait
  49. echo ===== P0 output
  50. docker exec -w /root/prac prac_p0 cat $savefile0
  51. docker exec -w /root/prac prac_p0 rm -f $savefile0
  52. echo ===== P1 output
  53. docker exec -w /root/prac prac_p1 cat $savefile1
  54. docker exec -w /root/prac prac_p1 rm -f $savefile1
  55. echo ===== P2 output
  56. docker exec -w /root/prac prac_p2 cat $savefile2
  57. docker exec -w /root/prac prac_p2 rm -f $savefile2
  58. date "+===== End %s %F %T"