Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1#!/bin/bash
  2#please run as root
  3
  4#we need 256M, below is the size in kB
  5needmem=262144
  6mnt=./huge
  7exitcode=0
  8
  9#get pagesize and freepages from /proc/meminfo
 10while 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
 17done < /proc/meminfo
 18
 19#set proper nr_hugepages
 20if [ -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
 44else
 45	echo "no hugetlbfs support in kernel?"
 46	exit 1
 47fi
 48
 49mkdir $mnt
 50mount -t hugetlbfs none $mnt
 51
 52echo "--------------------"
 53echo "running hugepage-mmap"
 54echo "--------------------"
 55./hugepage-mmap
 56if [ $? -ne 0 ]; then
 57	echo "[FAIL]"
 58	exitcode=1
 59else
 60	echo "[PASS]"
 61fi
 62
 63shmmax=`cat /proc/sys/kernel/shmmax`
 64shmall=`cat /proc/sys/kernel/shmall`
 65echo 268435456 > /proc/sys/kernel/shmmax
 66echo 4194304 > /proc/sys/kernel/shmall
 67echo "--------------------"
 68echo "running hugepage-shm"
 69echo "--------------------"
 70./hugepage-shm
 71if [ $? -ne 0 ]; then
 72	echo "[FAIL]"
 73	exitcode=1
 74else
 75	echo "[PASS]"
 76fi
 77echo $shmmax > /proc/sys/kernel/shmmax
 78echo $shmall > /proc/sys/kernel/shmall
 79
 80echo "--------------------"
 81echo "running map_hugetlb"
 82echo "--------------------"
 83./map_hugetlb
 84if [ $? -ne 0 ]; then
 85	echo "[FAIL]"
 86	exitcode=1
 87else
 88	echo "[PASS]"
 89fi
 90
 91echo "NOTE: The above hugetlb tests provide minimal coverage.  Use"
 92echo "      https://github.com/libhugetlbfs/libhugetlbfs.git for"
 93echo "      hugetlb regression testing."
 94
 95echo "--------------------"
 96echo "running userfaultfd"
 97echo "--------------------"
 98./userfaultfd 128 32
 99if [ $? -ne 0 ]; then
100	echo "[FAIL]"
101	exitcode=1
102else
103	echo "[PASS]"
104fi
105
106#cleanup
107umount $mnt
108rm -rf $mnt
109echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
110
111echo "-----------------------"
112echo "running compaction_test"
113echo "-----------------------"
114./compaction_test
115if [ $? -ne 0 ]; then
116	echo "[FAIL]"
117	exitcode=1
118else
119	echo "[PASS]"
120fi
121
122echo "--------------------"
123echo "running on-fault-limit"
124echo "--------------------"
125sudo -u nobody ./on-fault-limit
126if [ $? -ne 0 ]; then
127	echo "[FAIL]"
128	exitcode=1
129else
130	echo "[PASS]"
131fi
132
133echo "--------------------"
134echo "running mlock2-tests"
135echo "--------------------"
136./mlock2-tests
137if [ $? -ne 0 ]; then
138	echo "[FAIL]"
139	exitcode=1
140else
141	echo "[PASS]"
142fi
143
144exit $exitcode