run_param_test.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0+ or MIT
  3. NR_CPUS=`grep '^processor' /proc/cpuinfo | wc -l`
  4. EXTRA_ARGS=${@}
  5. OLDIFS="$IFS"
  6. IFS=$'\n'
  7. TEST_LIST=(
  8. "-T s"
  9. "-T l"
  10. "-T b"
  11. "-T b -M"
  12. "-T m"
  13. "-T m -M"
  14. "-T i"
  15. "-T r"
  16. )
  17. TEST_NAME=(
  18. "spinlock"
  19. "list"
  20. "buffer"
  21. "buffer with barrier"
  22. "memcpy"
  23. "memcpy with barrier"
  24. "increment"
  25. "membarrier"
  26. )
  27. IFS="$OLDIFS"
  28. REPS=1000
  29. SLOW_REPS=100
  30. NR_THREADS=$((6*${NR_CPUS}))
  31. function do_tests()
  32. {
  33. local i=0
  34. while [ "$i" -lt "${#TEST_LIST[@]}" ]; do
  35. echo "Running test ${TEST_NAME[$i]}"
  36. ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
  37. echo "Running compare-twice test ${TEST_NAME[$i]}"
  38. ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
  39. echo "Running mm_cid test ${TEST_NAME[$i]}"
  40. ./param_test_mm_cid ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
  41. echo "Running mm_cid compare-twice test ${TEST_NAME[$i]}"
  42. ./param_test_mm_cid_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 1
  43. let "i++"
  44. done
  45. }
  46. echo "Default parameters"
  47. do_tests
  48. echo "Loop injection: 10000 loops"
  49. OLDIFS="$IFS"
  50. IFS=$'\n'
  51. INJECT_LIST=(
  52. "1"
  53. "2"
  54. "3"
  55. "4"
  56. "5"
  57. "6"
  58. "7"
  59. "8"
  60. "9"
  61. )
  62. IFS="$OLDIFS"
  63. NR_LOOPS=10000
  64. i=0
  65. while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
  66. echo "Injecting at <${INJECT_LIST[$i]}>"
  67. do_tests -${INJECT_LIST[i]} ${NR_LOOPS}
  68. let "i++"
  69. done
  70. NR_LOOPS=
  71. function inject_blocking()
  72. {
  73. OLDIFS="$IFS"
  74. IFS=$'\n'
  75. INJECT_LIST=(
  76. "7"
  77. "8"
  78. "9"
  79. )
  80. IFS="$OLDIFS"
  81. NR_LOOPS=-1
  82. i=0
  83. while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
  84. echo "Injecting at <${INJECT_LIST[$i]}>"
  85. do_tests -${INJECT_LIST[i]} -1 ${@}
  86. let "i++"
  87. done
  88. NR_LOOPS=
  89. }
  90. echo "Yield injection (25%)"
  91. inject_blocking -m 4 -y
  92. echo "Yield injection (50%)"
  93. inject_blocking -m 2 -y
  94. echo "Yield injection (100%)"
  95. inject_blocking -m 1 -y
  96. echo "Kill injection (25%)"
  97. inject_blocking -m 4 -k
  98. echo "Kill injection (50%)"
  99. inject_blocking -m 2 -k
  100. echo "Kill injection (100%)"
  101. inject_blocking -m 1 -k
  102. echo "Sleep injection (1ms, 25%)"
  103. inject_blocking -m 4 -s 1
  104. echo "Sleep injection (1ms, 50%)"
  105. inject_blocking -m 2 -s 1
  106. echo "Sleep injection (1ms, 100%)"
  107. inject_blocking -m 1 -s 1