(Oracle)HugePage Size 计算脚本
Posted 特立独行
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Oracle)HugePage Size 计算脚本相关的知识,希望对你有一定的参考价值。
HugePage计算需要SGA等生效,需要先配置好内存
#!/bin/bash
#
# hugepages_settings.sh
#
# Linux bash script to compute values for the
# recommended HugePages/HugeTLB configuration
# on Oracle Linux
#
# 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.
#
# This script is provided by Doc ID 401749.1 from My Oracle Support
# http://support.oracle.com
# 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}\'`
if [ -z "$HPG_SZ" ];then
echo "The hugepages may not be supported in the system where the script is being executed."
exit 1
fi
# Initialize the counter
NUM_PG=0
# Cumulative number of pages required to handle the running shared memory segments
for SEG_BYTES in `ipcs -m | cut -c44-300 | awk \'{print $1}\' | 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
RES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`
# An SGA less than 100MB does not make sense
# Bail out if that is the case
if [ $RES_BYTES -lt 100000000 ]; then
echo "***********"
echo "** ERROR **"
echo "***********"
echo "Sorry! There are not enough total of shared memory segments allocated for
HugePages configuration. HugePages can only be used for shared memory segments
that you can list by command:
# ipcs -m
of a size that can match an Oracle Database SGA. Please make sure that:
* Oracle Database instance is up and running
* Oracle Database 11g Automatic Memory Management (AMM) is not configured"
exit 1
fi
# Finish with results
case $KERN in
\'2.4\') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;
echo "vm.hugetlb_pool = $HUGETLB_POOL" ;;
\'2.6\' | \'3.8\' | \'3.10\' | \'4.1\' | \'4.14\' | \'4.18\' | \'5.4\') echo "vm.nr_hugepages = $NUM_PG" ;;
*) echo "Kernel version $KERN is not supported by this script (yet). Exiting." ;;
esac
# End
以上是关于(Oracle)HugePage Size 计算脚本的主要内容,如果未能解决你的问题,请参考以下文章
LINUX下为ORACLE数据库设置大页--hugepage
LINUX下为ORACLE数据库设置大页--hugepage