Guest User

Untitled

a guest
Dec 17th, 2015
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.47 KB | None | 0 0
  1. [root@localhost tools]#  bash -xv hptweaks.sh
  2. #!/bin/bash
  3. #############################################################
  4. # tweaks for centminmod.com LEMP stacks on CentOS 6/7
  5. # centos transparent huge pages calculations for allocation
  6. # of nr.hugepages and max locked memory system limits
  7. # https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
  8. #############################################################
  9.  
  10. CENTOSVER=$(awk '{ print $3 }' /etc/redhat-release)
  11. ++ awk '{ print $3 }' /etc/redhat-release
  12. + CENTOSVER=6.7
  13.  
  14. if [ "$CENTOSVER" == 'release' ]; then
  15.     CENTOSVER=$(awk '{ print $4 }' /etc/redhat-release | cut -d . -f1,2)
  16.     if [[ "$(cat /etc/redhat-release | awk '{ print $4 }' | cut -d . -f1)" = '7' ]]; then
  17.         CENTOS_SEVEN='7'
  18.     fi
  19. fi
  20. + '[' 6.7 == release ']'
  21.  
  22. if [[ "$(cat /etc/redhat-release | awk '{ print $3 }' | cut -d . -f1)" = '6' ]]; then
  23.     CENTOS_SIX='6'
  24. fi
  25. ++ cat /etc/redhat-release
  26. ++ awk '{ print $3 }'
  27. ++ cut -d . -f1
  28. + [[ 6 = \6 ]]
  29. + CENTOS_SIX=6
  30.  
  31.     # check if redis installed as redis server requires huge pages disabled
  32.     if [[ ! "$(rpm -ql redis | grep not)" ]]; then
  33.         if [[ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]]; then
  34.             echo never > /sys/kernel/mm/transparent_hugepage/enabled
  35.         fi
  36.     fi
  37. ++ rpm -ql redis
  38. ++ grep not
  39. + [[ ! -n '' ]]
  40. + [[ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]]
  41. + echo never
  42.  
  43. if [[ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]]; then
  44.     HP_CHECK=$(cat /sys/kernel/mm/redhat_transparent_hugepage/enabled | grep -o '\[.*\]')
  45.     if [[ "$CENTOS_SIX" = '6' && "$HP_CHECK" = '[always]' ]]; then
  46.         FREEMEM=$(cat /proc/meminfo | grep MemFree | awk '{print $2}')
  47.         NRHUGEPAGES_COUNT=$(($FREEMEM/8/2048/16*16))
  48.         MAXLOCKEDMEM_COUNT=$(($FREEMEM/8/2048/16*16*4))
  49.         MAXLOCKEDMEM_SIZE=$((MAXLOCKEDMEM_COUNT*1024))
  50.     elif [[ "$CENTOS_SEVEN" = '7' && "$HP_CHECK" = '[always]' ]]; then
  51.         FREEMEM=$(cat /proc/meminfo | grep MemAvailable | awk '{print $2}')
  52.         NRHUGEPAGES_COUNT=$(($FREEMEM/8/2048/16*16))
  53.         MAXLOCKEDMEM_COUNT=$(($FREEMEM/8/2048/16*16*4))
  54.         MAXLOCKEDMEM_SIZE=$((MAXLOCKEDMEM_COUNT*1024))
  55.     fi
  56.    
  57.     if [[ "$HP_CHECK" = '[always]' ]]; then
  58.         echo
  59.         echo "set vm.nr.hugepages in /etc/sysctl.conf"
  60.         if [[ -z "$(grep '^vm.nr_hugepages' /etc/sysctl.conf)" ]]; then
  61.             echo "vm.nr_hugepages=$NRHUGEPAGES_COUNT" >> /etc/sysctl.conf
  62.             sysctl -p
  63.         else
  64.             sed -i "s|vm.nr_hugepages=.*|vm.nr_hugepages=$NRHUGEPAGES_COUNT|" /etc/sysctl.conf
  65.             sysctl -p
  66.         fi
  67.         echo
  68.         echo "set system max locked memory limit"
  69.         echo
  70.         echo "/etc/security/limits.conf"
  71.         echo "* soft memlock $MAXLOCKEDMEM_SIZE"
  72.         echo "* hard memlock $MAXLOCKEDMEM_SIZE"
  73.         if [[ -z "$(grep '^memlock' /etc/security/limits.conf)" ]]; then
  74.             echo "* soft memlock $MAXLOCKEDMEM_SIZE" >> /etc/security/limits.conf
  75.             echo "* hard memlock $MAXLOCKEDMEM_SIZE" >> /etc/security/limits.conf
  76.             echo
  77.         else
  78.             sed -i "s|memlock .*|memlock $MAXLOCKEDMEM_SIZE|g" /etc/security/limits.conf
  79.         fi
  80.         cat /etc/security/limits.conf
  81.         echo
  82.     fi
  83. elif [[ "$HP_CHECK" = '[never]' ]]; then
  84.     echo
  85.     echo "transparent huge pages not enabled"
  86.     echo "no tweaks needed"
  87.     echo   
  88. else
  89.     echo
  90.     echo "transparent huge pages not supported"
  91.     echo "no tweaks needed"
  92.     echo
  93. fi
  94. + [[ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]]
  95. ++ cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
  96. ++ grep -o '\[.*\]'
  97. + HP_CHECK='[never]'
  98. + [[ 6 = \6 ]]
  99. + [[ [never] = \[\a\l\w\a\y\s\] ]]
  100. + [[ '' = \7 ]]
  101. + [[ [never] = \[\a\l\w\a\y\s\] ]]
Advertisement
Add Comment
Please, Sign In to add comment