Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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 anon 128 32
99if [ $? -ne 0 ]; then
100 echo "[FAIL]"
101 exitcode=1
102else
103 echo "[PASS]"
104fi
105
106echo "---------------------------"
107echo "running userfaultfd_hugetlb"
108echo "---------------------------"
109# 256MB total huge pages == 128MB src and 128MB dst
110./userfaultfd hugetlb 128 32 $mnt/ufd_test_file
111if [ $? -ne 0 ]; then
112 echo "[FAIL]"
113 exitcode=1
114else
115 echo "[PASS]"
116fi
117rm -f $mnt/ufd_test_file
118
119echo "-------------------------"
120echo "running userfaultfd_shmem"
121echo "-------------------------"
122./userfaultfd shmem 128 32
123if [ $? -ne 0 ]; then
124 echo "[FAIL]"
125 exitcode=1
126else
127 echo "[PASS]"
128fi
129
130#cleanup
131umount $mnt
132rm -rf $mnt
133echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
134
135echo "-----------------------"
136echo "running compaction_test"
137echo "-----------------------"
138./compaction_test
139if [ $? -ne 0 ]; then
140 echo "[FAIL]"
141 exitcode=1
142else
143 echo "[PASS]"
144fi
145
146echo "----------------------"
147echo "running on-fault-limit"
148echo "----------------------"
149sudo -u nobody ./on-fault-limit
150if [ $? -ne 0 ]; then
151 echo "[FAIL]"
152 exitcode=1
153else
154 echo "[PASS]"
155fi
156
157echo "--------------------"
158echo "running mlock2-tests"
159echo "--------------------"
160./mlock2-tests
161if [ $? -ne 0 ]; then
162 echo "[FAIL]"
163 exitcode=1
164else
165 echo "[PASS]"
166fi
167
168echo "-----------------------------"
169echo "running virtual_address_range"
170echo "-----------------------------"
171./virtual_address_range
172if [ $? -ne 0 ]; then
173 echo "[FAIL]"
174 exitcode=1
175else
176 echo "[PASS]"
177fi
178
179exit $exitcode