HugePages不是个新事物,关于HugePages的文章有很多,这里没有必要详细解释,只想把几个关键点记录一下,供参考。考虑低版本以及32位系统用得较少,本文只针对RHEL/OEL/CentOS 5及以上、SLES11及以上x86-64 Linux。由于硬件的发展,Oracle可使用的内存越来越大,传统的内存页为4KB,内存页数量巨大使得内存管理成本相当高,进一步导致Oracle性能下降。HugePage是2MB大小的内存页,使用2MB的HugePage使内存页的数量减少为使用4KB页面的1/512,大大减少内存管理开销,因此Oracle强烈建议使用HugePages,配置方法如下:1、在/etc/sysctl.conf设置参数,并重启操作系统生效。这部分内存在系统启动后就分配为HugePage,不能被普通进程使用,也不会被对换到SWAP中,因此设置过大会导致操作系统内存耗尽而挂起。vm.nr_hugepages=4096注:单位为HugePage页数,上例中4096相当于8GB,可以用grep HugePages proc/meminfo查看HugePage的分配和使用情况2、在/etc/security/limits.conf中设置oracle用户、grid用户可以锁定HugePage的大小oracle soft memlock 8388608oracle hard memlock 8388608grid soft memlock 8388608grid hard memlock 8388608注:单位为KB,上例中为8GB,可以设置成与物理内存相当或略小,可以用ulimit -l确认当前值。3、11g及以上版本数据库设置初始化参数以禁用自动内存管理AMM,因为AMM和HugePages不兼容memory_target=0memory_max_target=0注:ASMM自动共享内存管理仍然可以使用,即sga_target、sga_max_size那么SGA多大需要配置HugePages呢?这个问题没有准确答案,我个人倾向于SGA在4GB和8GB之间考虑配置HugePages,SGA>8GB一定配置HugePages。既然HugePages能够提升大内存管理效率,RHEL6/SLES11开始引入了新的Transparent HugePages新特性,且缺省是开启的,它的优点在于“透明”,是由khugepaged线程动态配置的,无需象上面介绍的需要通过参数预先分配。但是新特性往往伴随着Bugs和不完善,使用Transparent HugePages时,RAC数据库存在节点意外重启的可能性,甚至单实例数据库也会发生性能下降故障,因此Oracle专门发布了Alert (Doc ID 1557478.1),建议禁用Transparent HugePages。禁用方法1:修改/boot/grub/grub.conf的kernel行,加上 transparent_hugepage=never,重启操作系统生效。禁用方法2:在/etc/rc.local加上两行:test -f sys/kernel/mm/transparent_hugepage/enabled && echo never > sys/kernel/mm/transparent_hugepage/enabledtest -f sys/kernel/mm/transparent_hugepage/defrag && echo never > sys/kernel/mm/transparent_hugepage/defrag检查当前Transparent HugePages状态:cat sys/kernel/mm/redhat_transparent_hugepage/enabledalways madvise [never]注:never带有中括号说明当前状态是禁用的,如果是always带有中括号说明当前是启用的虽然客户系统中有很多没有禁用Transparent HugePages,也没有发现因此产生问题,但已有金融行业的客户收到他们应用软件提供商发出警告,曾遇到过类似问题。总结:Oracle数据库服务器操作系统是RHEL6/SLES11或以上,强烈建议禁用Transparent HugePagesOracle数据库SGA较大时,建议配置传统的HugePages提升内存管理效率和Oracle性能。参考文档:HugePages on Oracle Linux 64-bit (Doc ID 361468.1)HugePages on Linux: What It Is... and What It Is Not... (Doc ID 361323.1)
Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration (Doc ID 401749.1)
ALERT: Disable Transparent HugePages on SLES11, RHEL6, RHEL7, OL6, OL7 and UEK2 Kernels (Doc ID 1557478.1)
文章转载自东方宏达EHONDA,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
743次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
644次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
565次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
514次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
510次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
495次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
478次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
436次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
369次阅读
2025-05-05 19:28:36