run_read_sweep.sh 1.9 KB

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