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