run_hugetlbfs_test.sh 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/bin/bash
  2. # please run as root
  3. # Kselftest framework requirement - SKIP code is 4.
  4. ksft_skip=4
  5. #
  6. # To test memfd_create with hugetlbfs, there needs to be hpages_test
  7. # huge pages free. Attempt to allocate enough pages to test.
  8. #
  9. hpages_test=8
  10. #
  11. # Get count of free huge pages from /proc/meminfo
  12. #
  13. while read name size unit; do
  14. if [ "$name" = "HugePages_Free:" ]; then
  15. freepgs=$size
  16. fi
  17. done < /proc/meminfo
  18. #
  19. # If not enough free huge pages for test, attempt to increase
  20. #
  21. if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
  22. nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
  23. hpages_needed=`expr $hpages_test - $freepgs`
  24. if [ $UID != 0 ]; then
  25. echo "Please run memfd with hugetlbfs test as root"
  26. exit $ksft_skip
  27. fi
  28. echo 3 > /proc/sys/vm/drop_caches
  29. echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
  30. while read name size unit; do
  31. if [ "$name" = "HugePages_Free:" ]; then
  32. freepgs=$size
  33. fi
  34. done < /proc/meminfo
  35. fi
  36. #
  37. # If still not enough huge pages available, exit. But, give back any huge
  38. # pages potentially allocated above.
  39. #
  40. if [ $freepgs -lt $hpages_test ]; then
  41. # nr_hugepgs non-zero only if we attempted to increase
  42. if [ -n "$nr_hugepgs" ]; then
  43. echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
  44. fi
  45. printf "Not enough huge pages available (%d < %d)\n" \
  46. $freepgs $needpgs
  47. exit $ksft_skip
  48. fi
  49. #
  50. # Run the hugetlbfs test
  51. #
  52. ./memfd_test hugetlbfs
  53. ./run_fuse_test.sh hugetlbfs
  54. #
  55. # Give back any huge pages allocated for the test
  56. #
  57. if [ -n "$nr_hugepgs" ]; then
  58. echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
  59. fi