pandora-scripts: add gamma control script
[openpandora.oe.git] / recipes / pandora-system / pandora-scripts / op_hugetlb.sh
1 #!/bin/sh
2
3 if [ "$#" -ne "1" ]; then
4         echo "usage: $0 <megabytes>"
5         exit 1
6 fi
7
8 if ! [ -e /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages ]; then
9         echo "hugetlb error: no hugetlb support in kernel"
10         exit 1
11 fi
12
13 pages_needed=$(( ($1 + 1) / 2 ))
14
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`
19
20 pages_inuse_before=$(($pages_nr - $pages_free + $pages_resv))
21 pages_inuse_after=$(($pages_inuse_before + $pages_needed))
22
23 for a in `seq 5`; do
24         echo $pages_inuse_after > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
25         sleep .2
26         pages_nr=`cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages`
27
28         if [ "$pages_nr" = "$pages_inuse_after" ]; then
29                 break
30         fi
31 done
32
33 if [ "$pages_nr" != "$pages_inuse_after" ]; then
34         echo "hugetlb error: could not alloc $pages_inuse_after pages (got $pages_nr)"
35 else
36         echo "hugetlb: $pages_nr pages allocated."
37 fi