| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/bin/sh
- set -o errexit
- reserve_pages()
- {
- echo $1 > $hugepage_path/nr_hugepages
- }
- if [ `grep hugepages_option /etc/yunion/host.conf | awk '{print $2}'` != "native" ]; then
- echo "host agent hugepage not enabled"
- exit 0
- fi
- hugepage_path=/sys/kernel/mm/hugepages/hugepages-1048576kB
- if [ ! -d $hugepage_path ]; then
- echo "ERROR: $hugepage_path does not exist"
- exit 1
- fi
- reserved=${RESERVED_MEM:--1}
- total=`free -g | grep Mem | awk '{ print $2 }'`
- if [ "$reserved" -gt "0" ]; then
- total=$((total-reserved))
- reserve_pages $total
- exit 0
- fi
- if [ "$total" -lt "10" ]; then
- reserved=1
- else
- reserved=$((total/5))
- if [ "$reserved" -gt "32" ]; then
- reserved=32
- fi
- fi
- total=$((total-reserved))
- reserve_pages $total
|