aboutsummaryrefslogtreecommitdiffstats
path: root/case-mincore-hugepages
blob: c51fb0c1d8206953322f9dc2dc8b3131c85b7982 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/sh

#
# Exercises code in mincore.c mm/
#

. ./hw_vars

# set number of hugepages in the system
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo $((mem/Hugepagesize/1024 / 20)) > /proc/sys/vm/nr_hugepages
echo $((mem/Hugepagesize/1024 / 10)) > /proc/sys/vm/nr_overcommit_hugepages

#check for max shared memory allowed on system
MAX_HUGEPAGES=$(( $(cat /proc/sys/vm/nr_hugepages) + $(cat /proc/sys/vm/nr_overcommit_hugepages) ))

#segment size being requested
SHM_SIZE=$(($MAX_HUGEPAGES*$hugepagesize / nr_task))

#set shmmax to accommodate the request
echo $SHM_SIZE > /proc/sys/kernel/shmmax

#check to see if the request can be satisfied else exit with error
MAX_SHARE_SEGMENT=$(cat /proc/sys/kernel/shmmax)
if [ $SHM_SIZE -gt $MAX_SHARE_SEGMENT ]
then
        echo "Cannot allocate more shared memory segment than $MAX_SHARE_SEGMENT"
        echo "exiting now..."
        exit 1 #exit on failure
fi

create_sparse_file $SPARSE_FILE $SHM_SIZE

$USEMEM -t $nr_task -f $SPARSE_FILE -H --prealloc --readonly --random $SHM_SIZE

echo always > /sys/kernel/mm/transparent_hugepage/enabled

rm $SPARSE_FILE