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