• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# please run as root
3
4#
5# Normal tests requiring no special resources
6#
7./run_fuse_test.sh
8./memfd_test
9
10#
11# To test memfd_create with hugetlbfs, there needs to be hpages_test
12# huge pages free.  Attempt to allocate enough pages to test.
13#
14hpages_test=8
15
16#
17# Get count of free huge pages from /proc/meminfo
18#
19while read name size unit; do
20        if [ "$name" = "HugePages_Free:" ]; then
21                freepgs=$size
22        fi
23done < /proc/meminfo
24
25#
26# If not enough free huge pages for test, attempt to increase
27#
28if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
29	nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
30	hpages_needed=`expr $hpages_test - $freepgs`
31
32	echo 3 > /proc/sys/vm/drop_caches
33	echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
34	if [ $? -ne 0 ]; then
35		echo "Please run this test as root"
36		exit 1
37	fi
38	while read name size unit; do
39		if [ "$name" = "HugePages_Free:" ]; then
40			freepgs=$size
41		fi
42	done < /proc/meminfo
43fi
44
45#
46# If still not enough huge pages available, exit.  But, give back any huge
47# pages potentially allocated above.
48#
49if [ $freepgs -lt $hpages_test ]; then
50	# nr_hugepgs non-zero only if we attempted to increase
51	if [ -n "$nr_hugepgs" ]; then
52		echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
53	fi
54	printf "Not enough huge pages available (%d < %d)\n" \
55		$freepgs $needpgs
56	exit 1
57fi
58
59#
60# Run the hugetlbfs test
61#
62./memfd_test hugetlbfs
63
64#
65# Give back any huge pages allocated for the test
66#
67if [ -n "$nr_hugepgs" ]; then
68	echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
69fi
70