Created
April 23, 2019 05:08
-
-
Save tschaefer/71ec26b30d7e267242cff25ee5fecff0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# hugepages_settings.sh | |
# | |
# Linux bash script to compute values for the | |
# recommended HugePages/HugeTLB configuration | |
# | |
# Note: This script does calculation for all shared memory | |
# segments available when the script is run, no matter it | |
# is an Oracle RDBMS shared memory segment or not. | |
# Check for the kernel version | |
KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'` | |
# Find out the HugePage size | |
HPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}` | |
# Start from 1 pages to be on the safe side and guarantee 1 free HugePage | |
NUM_PG=1 | |
# Cumulative number of pages required to handle the running shared memory segments | |
for SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "[0-9][0-9]*"` | |
do | |
MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` | |
if [ $MIN_PG -gt 0 ]; then | |
NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` | |
fi | |
done | |
# Finish with results | |
case $KERN in | |
'2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; | |
echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; | |
'2.6' | '3.8' | '3.10' | '4.1' | '4.14' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; | |
*) echo "Unrecognized kernel version $KERN. Exiting." ;; | |
esac | |
# End |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment