暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库、HugePages和Transparent Hugepages

东方宏达EHONDA 2016-08-06
919

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论