Hello Beta testers

I have very interesting case to share

In order to improve database server performance on Oracle RAC one Node i introduce change on ASM - as memory allocation from 380M to 1.5GB.

Also HugePages is caviar of this topic

Additional details:
OS Linux - Red Hat Enterprise Linux Server release 6.2 (Santiago)
Oracle GI
Oracle DB
First database with Total 14GB SGA allocation
Second database with Total 3GB SGA allocation

---- script to calculate Huge Pages

# 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
# 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]*"`
   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`
# 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') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;
    *) echo "Unrecognized kernel version $KERN. Exiting." ;;
# End

--- check recomendation
Recommended setting: vm.nr_hugepages = 8704
in order to calculate correct value you can simple to following /2048*1024 - e.g. (17GB) 17 * 1024 = 17408 /2048*1024 = 8704

Will be good take into account future SGA change because in order to change to upper value you have to perform server/node restart.

So, i decided to add 80GB - this is -> vm.nr_hugepages = 40960

Simple add this in /etc/sysctl.conf