3 if [ "$#" -ne "1" ]; then
4 echo "usage: $0 <megabytes>"
8 if ! [ -e /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages ]; then
9 echo "hugetlb error: no hugetlb support in kernel"
13 pages_needed=$(( ($1 + 1) / 2 ))
15 # find amount of pages reserved or in use
16 pages_nr=`cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages`
17 pages_free=`cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages`
18 pages_resv=`cat /sys/kernel/mm/hugepages/hugepages-2048kB/resv_hugepages`
20 pages_inuse_before=$(($pages_nr - $pages_free + $pages_resv))
21 pages_inuse_after=$(($pages_inuse_before + $pages_needed))
24 echo $pages_inuse_after > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
26 pages_nr=`cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages`
28 if [ "$pages_nr" = "$pages_inuse_after" ]; then
33 if [ "$pages_nr" != "$pages_inuse_after" ]; then
34 echo "hugetlb error: could not alloc $pages_inuse_after pages (got $pages_nr)"
36 echo "hugetlb: $pages_nr pages allocated."