- Giảm tải Oracle database trên Linux khi hệ thống sử dụng RAM và SGA lớn.
- Đảm bảo tối ưu khả năng sử dụng RAM của database Oracle
- Đảm bảo database hoạt động ổn định
- Tối ưu khả năng sử dụng SWAP trên server database
Sau đây là các bước
thực hiện để cấu hình hugepages trên server database
cat
* soft memlock 60397977
* hard memlock 60397977
|
ALTER SYSTEM SET MEMORY_TARGET
= 0 SCOPE=SPFILE;
ALTER SYSTEM SET MEMORY_MAX_TARGET
= 0 SCOPE=SPFILE;
|
ALTER
SYSTEM SET SGA_TARGET = 40G scope=spfile ALTER SYSTEM SET PGA_AGGREGET_TARGET = 40G scope=spfile
|
Nếu không thay đổi tham số MEMORY_TARGET,
MEMORY_MAX_TARGET và SGA_TARGET thì không cần phải làm bước này.
Bước 5: Tính toán và thiết lập giá trị hugepages- Check Hugepagesize: grep Hugepagesize /proc/meminfo
Hugepagesize là 2048kb
Sửa file /etc/sysctl.conf và thiết lập tham số vm.nr_hugepages theo giá trị tính toán ở trên
vm.nr_hugepages
= 20480
Bước 7: Kiểm tra lại cấu hình
# grep ^Huge /proc/meminfo HugePages_Total: 20480 HugePages_Free: 2056 HugePages_Rsvd: 2016 HugePages_Surp: 0 Hugepagesize: 2048 kB |
Script tính toán tham số hugepages
#!/bin/bash
#
#
hugepages_settings.sh
#
echo
"Press Enter to proceed..."
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
@ Trần Văn Bình - Founder of "Oracle DBA Việt Nam"
#OracleTutorial
#OracleDBA
#OracleDatabaseAdministration
#học oracle database
#oca
#ocp
#oce
#ocm