test_cpuset_v1_base.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. #
  4. # Basc test for cpuset v1 interfaces write/read
  5. #
  6. skip_test() {
  7. echo "$1"
  8. echo "Test SKIPPED"
  9. exit 4 # ksft_skip
  10. }
  11. write_test() {
  12. dir=$1
  13. interface=$2
  14. value=$3
  15. original=$(cat $dir/$interface)
  16. echo "testing $interface $value"
  17. echo $value > $dir/$interface
  18. new=$(cat $dir/$interface)
  19. [[ $value -ne $(cat $dir/$interface) ]] && {
  20. echo "$interface write $value failed: new:$new"
  21. exit 1
  22. }
  23. }
  24. [[ $(id -u) -eq 0 ]] || skip_test "Test must be run as root!"
  25. # Find cpuset v1 mount point
  26. CPUSET=$(mount -t cgroup | grep cpuset | head -1 | awk '{print $3}')
  27. [[ -n "$CPUSET" ]] || skip_test "cpuset v1 mount point not found!"
  28. #
  29. # Create a test cpuset, read write test
  30. #
  31. TDIR=test$$
  32. [[ -d $CPUSET/$TDIR ]] || mkdir $CPUSET/$TDIR
  33. ITF_MATRIX=(
  34. #interface value expect root_only
  35. 'cpuset.cpus 0-1 0-1 0'
  36. 'cpuset.mem_exclusive 1 1 0'
  37. 'cpuset.mem_exclusive 0 0 0'
  38. 'cpuset.mem_hardwall 1 1 0'
  39. 'cpuset.mem_hardwall 0 0 0'
  40. 'cpuset.memory_migrate 1 1 0'
  41. 'cpuset.memory_migrate 0 0 0'
  42. 'cpuset.memory_spread_page 1 1 0'
  43. 'cpuset.memory_spread_page 0 0 0'
  44. 'cpuset.memory_spread_slab 1 1 0'
  45. 'cpuset.memory_spread_slab 0 0 0'
  46. 'cpuset.mems 0 0 0'
  47. 'cpuset.sched_load_balance 1 1 0'
  48. 'cpuset.sched_load_balance 0 0 0'
  49. 'cpuset.sched_relax_domain_level 2 2 0'
  50. 'cpuset.memory_pressure_enabled 1 1 1'
  51. 'cpuset.memory_pressure_enabled 0 0 1'
  52. )
  53. run_test()
  54. {
  55. cnt="${ITF_MATRIX[@]}"
  56. for i in "${ITF_MATRIX[@]}" ; do
  57. args=($i)
  58. root_only=${args[3]}
  59. [[ $root_only -eq 1 ]] && {
  60. write_test "$CPUSET" "${args[0]}" "${args[1]}" "${args[2]}"
  61. continue
  62. }
  63. write_test "$CPUSET/$TDIR" "${args[0]}" "${args[1]}" "${args[2]}"
  64. done
  65. }
  66. run_test
  67. rmdir $CPUSET/$TDIR
  68. echo "Test PASSED"
  69. exit 0