run_write_sweep.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/bash
  2. function prep_folder()
  3. {
  4. folder=$1
  5. if [[ -d ${folder} ]]; then
  6. rm -f ${folder}/*
  7. else
  8. mkdir -p ${folder}
  9. fi
  10. }
  11. function validate_environment()
  12. {
  13. validate_cmd="python ./validate_async_io.py"
  14. eval ${validate_cmd}
  15. res=$?
  16. if [[ $res != 0 ]]; then
  17. echo "Failing because environment is not properly configured"
  18. echo "Possible fix: sudo apt-get install libaio-dev"
  19. exit 1
  20. fi
  21. }
  22. validate_environment
  23. if [[ $# -ne 3 ]]; then
  24. echo "Usage: $0 <write size in MB> <write dir ><output log dir>"
  25. exit 1
  26. fi
  27. SIZE="$1M"
  28. WRITE_DIR=$2
  29. LOG_DIR=$3/aio_perf_sweep
  30. OUTPUT_FILE=${WRITE_DIR}/ds_aio_write_${SIZE}B.pt
  31. WRITE_OPT="--write_file ${OUTPUT_FILE} --write_size ${SIZE}"
  32. prep_folder ${WRITE_DIR}
  33. prep_folder ${LOG_DIR}
  34. RUN_SCRIPT=./test_ds_aio.py
  35. DISABLE_CACHE="sync; sudo bash -c 'echo 1 > /proc/sys/vm/drop_caches' "
  36. SYNC="sync"
  37. for sub in single block; do
  38. if [[ $sub == "single" ]]; then
  39. sub_opt="--single_submit"
  40. else
  41. sub_opt=""
  42. fi
  43. for ov in overlap sequential; do
  44. if [[ $ov == "overlap" ]]; then
  45. ov_opt="--overlap_events"
  46. else
  47. ov_opt=""
  48. fi
  49. for t in 1 2 4 8; do
  50. for p in 1; do
  51. for d in 1 2 4 8 16 32; do
  52. for bs in 128K 256K 512K 1M; do
  53. SCHED_OPTS="${sub_opt} ${ov_opt} --handle --threads ${t}"
  54. OPTS="--io_parallel ${p} --queue_depth ${d} --block_size ${bs}"
  55. LOG="${LOG_DIR}/write_${sub}_${ov}_t${t}_p${p}_d${d}_bs${bs}.txt"
  56. cmd="python ${RUN_SCRIPT} ${WRITE_OPT} ${OPTS} ${SCHED_OPTS} &> ${LOG}"
  57. echo ${DISABLE_CACHE}
  58. echo ${cmd}
  59. echo ${SYNC}
  60. eval ${DISABLE_CACHE}
  61. eval ${cmd}
  62. eval ${SYNC}
  63. sleep 2
  64. done
  65. done
  66. done
  67. done
  68. done
  69. done