run-experiment.sh 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. modeval=0
  13. if [ "$1" != "" ]; then
  14. mode="$1"
  15. fi
  16. if [ "$2" != "" ]; then
  17. size="$2"
  18. fi
  19. if [ "$3" != "" ]; then
  20. iters="$3"
  21. fi
  22. if [ "$4" != "" ]; then
  23. phase="$4"
  24. fi
  25. if [ "$mode" == "read" ]; then
  26. modeval="0"
  27. fi
  28. if [ "$mode" == "write" ]; then
  29. modeval="0"
  30. fi
  31. if [ "$mode" == "readwrite" ]; then
  32. modeval="1"
  33. fi
  34. items=$((1<<size))
  35. echo ===== Running duoram $mode $size $iters
  36. date "+===== Start %s %F %T"
  37. if [ "$4" = "online" ]; then
  38. # Run, saving the output
  39. savefilep2=$$.p2.out
  40. savefilep0=$$.p1.out
  41. savefilep1=$$.p0.out
  42. 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" &
  43. sleep 4
  44. 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" &
  45. sleep 2
  46. 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" &
  47. wait
  48. echo ===== P0 output
  49. docker exec -w /root/duoram/duoram-online duoram_p0 cat $savefilep0
  50. docker exec -w /root/duoram/duoram-online duoram_p0 rm -f $savefilep0
  51. echo ===== P1 output
  52. docker exec -w /root/duoram/duoram-online duoram_p1 cat $savefilep1
  53. docker exec -w /root/duoram/duoram-online duoram_p1 rm -f $savefilep1
  54. date "+===== End %s %F %T"
  55. fi
  56. if [ "$4" = "preproc" ]; then
  57. # Run, saving the output
  58. savefilep2=$$.p2.out
  59. savefilep0=$$.p1.out
  60. savefilep1=$$.p0.out
  61. docker exec -w /root/duoram/preprocessing duoram_p2 bash -c "$DUORAM_NUMA_P2 stdbuf -o 0 ./p2preprocessing $p0addr $p1addr $iters $size $modeval > $savefilep2 2>&1" &
  62. sleep 4
  63. docker exec -w /root/duoram/preprocessing duoram_p1 bash -c "$DUORAM_NUMA_P1 stdbuf -o 0 ./preprocessing1 $p0addr $p2addr $iters $size $modeval > $savefilep1 2>&1" &
  64. sleep 2
  65. docker exec -w /root/duoram/preprocessing duoram_p0 bash -c "$DUORAM_NUMA_P0 stdbuf -o 0 ./preprocessing0 $p1addr $p2addr $iters $size $modeval > $savefilep0 2>&1" &
  66. wait
  67. echo ===== P0 output
  68. docker exec -w /root/duoram/preprocessing duoram_p0 cat $savefilep0
  69. docker exec -w /root/duoram/preprocessing duoram_p0 rm -f $savefilep0
  70. echo ===== P1 output
  71. docker exec -w /root/duoram/preprocessing duoram_p1 cat $savefilep1
  72. docker exec -w /root/duoram/preprocessing duoram_p1 rm -f $savefilep1
  73. date "+===== End %s %F %T"
  74. fi