Advertisement
Guest User

Untitled

a guest
Dec 17th, 2015
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.36 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. else
  84.     echo
  85.     echo "transparent huge pages not enabled or supported"
  86.     echo "no tweaks needed"
  87.     echo
  88. fi
  89. + [[ -f /sys/kernel/mm/redhat_transparent_hugepage/enabled ]]
  90. ++ cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
  91. ++ grep -o '\[.*\]'
  92. + HP_CHECK='[never]'
  93. + [[ 6 = \6 ]]
  94. + [[ [never] = \[\a\l\w\a\y\s\] ]]
  95. + [[ '' = \7 ]]
  96. + [[ [never] = \[\a\l\w\a\y\s\] ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement