run-experiment.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/bin/bash
  2. # Get the IP addresses
  3. p0addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p0)
  4. p1addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p1)
  5. p2addr=$(docker inspect --format='{{ .NetworkSettings.IPAddress }}' duoram_p2)
  6. # The Duoram mode and size
  7. # mode is read, write, readwrite, or init
  8. phase=online
  9. mode=read
  10. size=20
  11. iters=128
  12. if [ "$1" != "" ]; then
  13. mode="$1"
  14. fi
  15. if [ "$2" != "" ]; then
  16. size="$2"
  17. fi
  18. if [ "$3" != "" ]; then
  19. iters="$3"
  20. fi
  21. if [ "$4" != "" ]; then
  22. phase="$4"
  23. fi
  24. items=$((1<<size))
  25. echo ===== Running duoram $mode $size $iters
  26. date "+===== Start %s %F %T"
  27. if [ "$4" = "online" ]; then
  28. # Run, saving the output
  29. savefilep2=$$.p2.out
  30. savefilep0=$$.p1.out
  31. savefilep1=$$.p0.out
  32. docker exec -w /root/duoram/duoram-online duoram_p2 bash -c "$DUORAM_NUMA_P2 stdbuf -o 0 ./p2 $p0addr $p1addr $size $iters $iters $iters 1 > $savefilep2 2>&1" &
  33. sleep 4
  34. docker exec -w /root/duoram/duoram-online duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./duoram1 $p0addr $p2addr $size $iters $iters $iters 1 > $savefilep1 2>&1" &
  35. sleep 2
  36. docker exec -w /root/duoram/duoram-online duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./duoram0 $p1addr $p2addr $size $iters $iters $iters 1 > $savefilep0 2>&1" &
  37. wait
  38. echo ===== P0 output
  39. docker exec -w /root/duoram/duoram-online duoram_p0 cat $savefilep0
  40. docker exec -w /root/duoram/duoram-online duoram_p0 rm -f $savefilep0
  41. echo ===== P1 output
  42. docker exec -w /root/duoram/duoram-online duoram_p1 cat $savefilep1
  43. docker exec -w /root/duoram/duoram-online duoram_p1 rm -f $savefilep1
  44. date "+===== End %s %F %T"
  45. fi