sched.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. #!/bin/bash
  2. # perf sched tests
  3. # SPDX-License-Identifier: GPL-2.0
  4. set -e
  5. if [ "$(id -u)" != 0 ]; then
  6. echo "[Skip] No root permission"
  7. exit 2
  8. fi
  9. err=0
  10. perfdata=$(mktemp /tmp/__perf_test_sched.perf.data.XXXXX)
  11. PID1=0
  12. PID2=0
  13. cleanup() {
  14. rm -f "${perfdata}"
  15. rm -f "${perfdata}".old
  16. trap - EXIT TERM INT
  17. }
  18. trap_cleanup() {
  19. echo "Unexpected signal in ${FUNCNAME[1]}"
  20. cleanup
  21. exit 1
  22. }
  23. trap trap_cleanup EXIT TERM INT
  24. start_noploops() {
  25. # Start two noploop workloads on CPU0 to trigger scheduling.
  26. perf test -w noploop 10 &
  27. PID1=$!
  28. taskset -pc 0 $PID1
  29. perf test -w noploop 10 &
  30. PID2=$!
  31. taskset -pc 0 $PID2
  32. if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID1/status"
  33. then
  34. echo "Sched [Error taskset did not work for the 1st noploop ($PID1)]"
  35. grep Cpus_allowed /proc/$PID1/status
  36. err=1
  37. fi
  38. if ! grep -q 'Cpus_allowed_list:\s*0$' "/proc/$PID2/status"
  39. then
  40. echo "Sched [Error taskset did not work for the 2nd noploop ($PID2)]"
  41. grep Cpus_allowed /proc/$PID2/status
  42. err=1
  43. fi
  44. }
  45. cleanup_noploops() {
  46. kill "$PID1" "$PID2" || true
  47. }
  48. test_sched_record() {
  49. echo "Sched record"
  50. start_noploops
  51. perf sched record --no-inherit -o "${perfdata}" sleep 1
  52. cleanup_noploops
  53. }
  54. test_sched_latency() {
  55. echo "Sched latency"
  56. if ! perf sched latency -i "${perfdata}" | grep -q perf-noploop
  57. then
  58. echo "Sched latency [Failed missing output]"
  59. err=1
  60. fi
  61. }
  62. test_sched_script() {
  63. echo "Sched script"
  64. if ! perf sched script -i "${perfdata}" | grep -q perf-noploop
  65. then
  66. echo "Sched script [Failed missing output]"
  67. err=1
  68. fi
  69. }
  70. test_sched_map() {
  71. echo "Sched map"
  72. if ! perf sched map -i "${perfdata}" | grep -q perf-noploop
  73. then
  74. echo "Sched map [Failed missing output]"
  75. err=1
  76. fi
  77. }
  78. test_sched_timehist() {
  79. echo "Sched timehist"
  80. if ! perf sched timehist -i "${perfdata}" | grep -q perf-noploop
  81. then
  82. echo "Sched timehist [Failed missing output]"
  83. err=1
  84. fi
  85. }
  86. test_sched_record
  87. test_sched_latency
  88. test_sched_script
  89. test_sched_map
  90. test_sched_timehist
  91. cleanup
  92. exit $err