run_vmtests 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #!/bin/bash
  2. #please run as root
  3. #we need 256M, below is the size in kB
  4. needmem=262144
  5. mnt=./huge
  6. exitcode=0
  7. #get pagesize and freepages from /proc/meminfo
  8. while read name size unit; do
  9. if [ "$name" = "HugePages_Free:" ]; then
  10. freepgs=$size
  11. fi
  12. if [ "$name" = "Hugepagesize:" ]; then
  13. pgsize=$size
  14. fi
  15. done < /proc/meminfo
  16. #set proper nr_hugepages
  17. if [ -n "$freepgs" ] && [ -n "$pgsize" ]; then
  18. nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
  19. needpgs=`expr $needmem / $pgsize`
  20. tries=2
  21. while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do
  22. lackpgs=$(( $needpgs - $freepgs ))
  23. echo 3 > /proc/sys/vm/drop_caches
  24. echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
  25. if [ $? -ne 0 ]; then
  26. echo "Please run this test as root"
  27. exit 1
  28. fi
  29. while read name size unit; do
  30. if [ "$name" = "HugePages_Free:" ]; then
  31. freepgs=$size
  32. fi
  33. done < /proc/meminfo
  34. tries=$((tries - 1))
  35. done
  36. if [ $freepgs -lt $needpgs ]; then
  37. printf "Not enough huge pages available (%d < %d)\n" \
  38. $freepgs $needpgs
  39. exit 1
  40. fi
  41. else
  42. echo "no hugetlbfs support in kernel?"
  43. exit 1
  44. fi
  45. mkdir $mnt
  46. mount -t hugetlbfs none $mnt
  47. echo "--------------------"
  48. echo "running hugepage-mmap"
  49. echo "--------------------"
  50. ./hugepage-mmap
  51. if [ $? -ne 0 ]; then
  52. echo "[FAIL]"
  53. exitcode=1
  54. else
  55. echo "[PASS]"
  56. fi
  57. shmmax=`cat /proc/sys/kernel/shmmax`
  58. shmall=`cat /proc/sys/kernel/shmall`
  59. echo 268435456 > /proc/sys/kernel/shmmax
  60. echo 4194304 > /proc/sys/kernel/shmall
  61. echo "--------------------"
  62. echo "running hugepage-shm"
  63. echo "--------------------"
  64. ./hugepage-shm
  65. if [ $? -ne 0 ]; then
  66. echo "[FAIL]"
  67. exitcode=1
  68. else
  69. echo "[PASS]"
  70. fi
  71. echo $shmmax > /proc/sys/kernel/shmmax
  72. echo $shmall > /proc/sys/kernel/shmall
  73. echo "--------------------"
  74. echo "running map_hugetlb"
  75. echo "--------------------"
  76. ./map_hugetlb
  77. if [ $? -ne 0 ]; then
  78. echo "[FAIL]"
  79. exitcode=1
  80. else
  81. echo "[PASS]"
  82. fi
  83. echo "NOTE: The above hugetlb tests provide minimal coverage. Use"
  84. echo " https://github.com/libhugetlbfs/libhugetlbfs.git for"
  85. echo " hugetlb regression testing."
  86. echo "--------------------"
  87. echo "running userfaultfd"
  88. echo "--------------------"
  89. ./userfaultfd 128 32
  90. if [ $? -ne 0 ]; then
  91. echo "[FAIL]"
  92. exitcode=1
  93. else
  94. echo "[PASS]"
  95. fi
  96. #cleanup
  97. umount $mnt
  98. rm -rf $mnt
  99. echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
  100. echo "-----------------------"
  101. echo "running compaction_test"
  102. echo "-----------------------"
  103. ./compaction_test
  104. if [ $? -ne 0 ]; then
  105. echo "[FAIL]"
  106. exitcode=1
  107. else
  108. echo "[PASS]"
  109. fi
  110. echo "--------------------"
  111. echo "running on-fault-limit"
  112. echo "--------------------"
  113. sudo -u nobody ./on-fault-limit
  114. if [ $? -ne 0 ]; then
  115. echo "[FAIL]"
  116. exitcode=1
  117. else
  118. echo "[PASS]"
  119. fi
  120. echo "--------------------"
  121. echo "running mlock2-tests"
  122. echo "--------------------"
  123. ./mlock2-tests
  124. if [ $? -ne 0 ]; then
  125. echo "[FAIL]"
  126. exitcode=1
  127. else
  128. echo "[PASS]"
  129. fi
  130. exit $exitcode