Script tính toán tham số hugepages
#!/bin/bash
#
#
hugepages_settings.sh
#
read
# 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 "Recommended setting:
vm.hugetlb_pool = $HUGETLB_POOL" ;;
'2.6') echo "Recommended setting:
vm.nr_hugepages = $NUM_PG" ;;
*) echo "Unrecognized kernel version
$KERN. Exiting." ;;
esac
# End
#BossData #OraAz #OracleDBAAz #OracleTutorial #Quản_trị_cơ_sở_dữ_liệu_Oracle #OracleDBA #OracleDatabaseAdministration