HugePages是Linux内核2.6+集成的一个功能,可以允许管理大于4KB的页。
相关概念
如果你使用大内存及大的SGA,那HugePages是加快数据库性能的重要因素,优点如下:
Step 1: vi/etc/security/limits.conf 单位KB,设置比SGA大没问题。使用oracle-validated包和exadata默认会被设置。也可以在etc/security/limits.d/ 目录下设置。
* soft memlock 60397977 * hard memlock 60397977
Step 2: 重新登陆oracle,check
$ ulimit -l 60397977
Step 3: AMM同hugepages不兼容,需先禁用(11.2.0.3+默认不配置AMM),不然会有如下报错:
ORA-00845:MEMORY_TARGET not supported on this system
Step4: 开启数据库实例,包括ASM,使用如下脚本计算vm.nr_hugepages:
$ ./hugepages_settings.sh ... Recommended setting: vm.nr_hugepages = 1496 $
Step 5: vi /etc/sysctl.conf 设置 vm.nr_hugepages,sysctl -p:
... vm.nr_hugepages = 1496 ...
Step6: 停实例,重启server(最佳实践建议重启)系统重启后,启动实例,检查是否生效, HugePages_Free value应该小于HugePages_Total:
# grep HugePages/proc/meminfo HugePages_Total: 1496 HugePages_Free: 485 HugePages_Rsvd: 446 HugePages_Surp: 0
如果所有oracle实例PRE_PAGE_SGA参数是false,参数HugePages_Rsvd>0。12.1之前该参数默认false,12.1开始该参数默认为true
NOTES
HugePages配置基于内在和运行实例的SGA,如下变化需重新配置
如下情况需要评估HugePages配置是否合适:
参考:mos 361468.1
附:hugepages_settings.sh
#!/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.## This script is provided by Doc ID 401749.1 from My Oracle Support # http://support.oracle.com# Welcome textecho "This script is provided by Doc ID 401749.1 from My Oracle Support (http://support.oracle.com) where it is intended to compute values for the recommended HugePages/HugeTLB configuration for the current shared memory segments. Before proceeding with the execution please note following: * For ASM instance, it needs to configure ASMM instead of AMM. * The 'pga_aggregate_target' is outside the SGA and you should accommodate this while calculating SGA size. * In case you changes the DB SGA size, as the new SGA will not fit in the previous HugePages configuration, it had better disable the whole HugePages, start the DB with new SGA size and run the script again.And make sure that: * Oracle Database instance(s) are up and running * Oracle Database 11g Automatic Memory Management (AMM) is not setup (See Doc ID 749851.1) * The shared memory segments can be listed by command: # ipcs -mPress Enter to proceed..."read# Check for the kernel versionKERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage sizeHPG_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 1fi# Initialize the counterNUM_PG=0# Cumulative number of pages required to handle the running shared memory segmentsfor 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` fidoneRES_BYTES=`echo "$NUM_PG * $HPG_SZ * 1024" | bc -q`# An SGA less than 100MB does not make sense# Bail out if that is the caseif [ $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 -mof 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 1fi# Finish with resultscase $KERN in '2.2') echo "Kernel version $KERN is not supported. Exiting." ;; '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" ;;esac# End
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有