• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2#
3# Test program for memory error handling for hugepages
4# Usage: ./run-huge-test.sh hugetlbfs_directory
5# Author: Naoya Horiguchi
6
7usage()
8{
9    echo "Usage: ./run-huge-test.sh hugetlbfs_directory" && exit 1
10}
11
12htdir=$1
13[ $# -ne 1 ] && usage
14[ ! -d $htdir ] && usage
15
16rm -rf $htdir/test*
17echo 1000 > /proc/sys/vm/nr_hugepages
18
19num=0
20
21exec_testcase() {
22    error=0
23    echo "TestCase $@"
24    hpage_size=$1
25    hpage_target=$2
26    num=$7
27
28    if [ "$3" = "head" ] ; then
29	hpage_target_offset=0
30    elif [ "$3" = "tail" ] ; then
31	hpage_target_offset=1
32    else
33	error=1
34    fi
35    hpage_target=$((hpage_target * 512 + hpage_target_offset))
36
37    if [ "$4" = "early" ] ; then
38	process_type="-e"
39    elif [ "$4" = "late_touch" ] ; then
40	process_type=""
41    elif [ "$4" = "late_avoid" ] ; then
42	process_type="-a"
43    else
44	error=1
45    fi
46
47    if [ "$5" = "anonymous" ] ; then
48	file_type="-A"
49    elif [ "$5" = "file" ] ; then
50	file_type="-f $num"
51    elif [ "$5" = "shm" ] ; then
52	file_type="-S"
53    else
54	error=1
55    fi
56
57    if [ "$6" = "fork_shared" ] ; then
58	share_type="-F"
59    elif [ "$6" = "fork_private_nocow" ] ; then
60	share_type="-Fp"
61    elif [ "$6" = "fork_private_cow" ] ; then
62	share_type="-Fpc"
63    else
64	error=1
65    fi
66
67    command="./thugetlb -x -m $hpage_size -o $hpage_target $process_type $file_type $share_type $htdir &"
68    echo $command
69    eval $command
70    wait $!
71    echo ""
72
73    return 0
74}
75
76num=$((num+1))
77exec_testcase 2 1 "head" "early" "file" "fork_shared" $num
78num=$((num+1))
79exec_testcase 2 1 "head" "early" "file" "fork_private_nocow" $num
80num=$((num+1))
81exec_testcase 2 1 "head" "early" "file" "fork_private_cow" $num
82num=$((num+1))
83exec_testcase 2 1 "head" "early" "shm" "fork_shared" $num
84num=$((num+1))
85exec_testcase 2 1 "head" "early" "anonymous" "fork_shared" $num
86num=$((num+1))
87exec_testcase 2 1 "head" "early" "anonymous" "fork_private_nocow" $num
88num=$((num+1))
89exec_testcase 2 1 "head" "early" "anonymous" "fork_private_cow" $num
90
91num=$((num+1))
92exec_testcase 2 1 "head" "late_touch" "file" "fork_shared" $num
93num=$((num+1))
94exec_testcase 2 1 "head" "late_touch" "file" "fork_private_nocow" $num
95num=$((num+1))
96exec_testcase 2 1 "head" "late_touch" "file" "fork_private_cow" $num
97num=$((num+1))
98exec_testcase 2 1 "head" "late_touch" "shm" "fork_shared" $num
99num=$((num+1))
100exec_testcase 2 1 "head" "late_touch" "anonymous" "fork_shared" $num
101num=$((num+1))
102exec_testcase 2 1 "head" "late_touch" "anonymous" "fork_private_nocow" $num
103num=$((num+1))
104exec_testcase 2 1 "head" "late_touch" "anonymous" "fork_private_cow" $num
105
106num=$((num+1))
107exec_testcase 2 1 "head" "late_avoid" "file" "fork_shared" $num
108num=$((num+1))
109exec_testcase 2 1 "head" "late_avoid" "file" "fork_private_nocow" $num
110num=$((num+1))
111exec_testcase 2 1 "head" "late_avoid" "file" "fork_private_cow" $num
112num=$((num+1))
113exec_testcase 2 1 "head" "late_avoid" "shm" "fork_shared" $num
114num=$((num+1))
115exec_testcase 2 1 "head" "late_avoid" "anonymous" "fork_shared" $num
116num=$((num+1))
117exec_testcase 2 1 "head" "late_avoid" "anonymous" "fork_private_nocow" $num
118num=$((num+1))
119exec_testcase 2 1 "head" "late_avoid" "anonymous" "fork_private_cow" $num
120
121num=$((num+1))
122exec_testcase 2 1 "tail" "early" "file" "fork_shared" $num
123num=$((num+1))
124exec_testcase 2 1 "tail" "early" "file" "fork_private_nocow" $num
125num=$((num+1))
126exec_testcase 2 1 "tail" "early" "file" "fork_private_cow" $num
127num=$((num+1))
128exec_testcase 2 1 "tail" "early" "shm" "fork_shared" $num
129num=$((num+1))
130exec_testcase 2 1 "tail" "early" "anonymous" "fork_shared" $num
131num=$((num+1))
132exec_testcase 2 1 "tail" "early" "anonymous" "fork_private_nocow" $num
133num=$((num+1))
134exec_testcase 2 1 "tail" "early" "anonymous" "fork_private_cow" $num
135
136num=$((num+1))
137exec_testcase 2 1 "tail" "late_touch" "file" "fork_shared" $num
138num=$((num+1))
139exec_testcase 2 1 "tail" "late_touch" "file" "fork_private_nocow" $num
140num=$((num+1))
141exec_testcase 2 1 "tail" "late_touch" "file" "fork_private_cow" $num
142num=$((num+1))
143exec_testcase 2 1 "tail" "late_touch" "shm" "fork_shared" $num
144num=$((num+1))
145exec_testcase 2 1 "tail" "late_touch" "anonymous" "fork_shared" $num
146num=$((num+1))
147exec_testcase 2 1 "tail" "late_touch" "anonymous" "fork_private_nocow" $num
148num=$((num+1))
149exec_testcase 2 1 "tail" "late_touch" "anonymous" "fork_private_cow" $num
150
151num=$((num+1))
152exec_testcase 2 1 "tail" "late_avoid" "file" "fork_shared" $num
153num=$((num+1))
154exec_testcase 2 1 "tail" "late_avoid" "file" "fork_private_nocow" $num
155num=$((num+1))
156exec_testcase 2 1 "tail" "late_avoid" "file" "fork_private_cow" $num
157num=$((num+1))
158exec_testcase 2 1 "tail" "late_avoid" "shm" "fork_shared" $num
159num=$((num+1))
160exec_testcase 2 1 "tail" "late_avoid" "anonymous" "fork_shared" $num
161num=$((num+1))
162exec_testcase 2 1 "tail" "late_avoid" "anonymous" "fork_private_nocow" $num
163num=$((num+1))
164exec_testcase 2 1 "tail" "late_avoid" "anonymous" "fork_private_cow" $num
165
166# free IPC semaphores used by thugetlb.c
167ipcs -s|grep $USER|cut -f2 -d' '|xargs ipcrm sem
168
169