oc-hugetlb-reserve-pages.sh 769 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/sh
  2. set -o errexit
  3. reserve_pages()
  4. {
  5. echo $1 > $hugepage_path/nr_hugepages
  6. }
  7. if [ `grep hugepages_option /etc/yunion/host.conf | awk '{print $2}'` != "native" ]; then
  8. echo "host agent hugepage not enabled"
  9. exit 0
  10. fi
  11. hugepage_path=/sys/kernel/mm/hugepages/hugepages-1048576kB
  12. if [ ! -d $hugepage_path ]; then
  13. echo "ERROR: $hugepage_path does not exist"
  14. exit 1
  15. fi
  16. reserved=${RESERVED_MEM:--1}
  17. total=`free -g | grep Mem | awk '{ print $2 }'`
  18. if [ "$reserved" -gt "0" ]; then
  19. total=$((total-reserved))
  20. reserve_pages $total
  21. exit 0
  22. fi
  23. if [ "$total" -lt "10" ]; then
  24. reserved=1
  25. else
  26. reserved=$((total/5))
  27. if [ "$reserved" -gt "32" ]; then
  28. reserved=32
  29. fi
  30. fi
  31. total=$((total-reserved))
  32. reserve_pages $total