Oracle 在Linux下HugePage的配置

Posted dayu.liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 在Linux下HugePage的配置相关的知识,希望对你有一定的参考价值。

因为自从接触Oracle依赖,生产环境用的一般是Aix系统,在Aix下没有听说过关于HugePage的相关概念。最近处理了一个关于Suse Linux下HugePage的问题。当时排查的方向如下:

  • 当客户在单个节点做压力测试时,物理内存为256G,随着压力测试的继续,内存使用率会飙升到100%,最终导致系统挂起。
  • 当时在排查的时候,考虑到SGA已经限定为135G,pga_aggregate_limit大小为45G(在12C中此参数为硬性指标,当占用的pga达到此参数设定的大小,连接会断开)。正常情况下,数据库使用的内存不会超过190G。
  • 且通过给v$process查看PGA_ALLOC_MEM的SUM总和大小不超过5G。

后来最终定位到HugePage的问题,通过调整memlock最终解决。

下面来看一下在Linux下如何配置HugePage:

1.设置memlock参数:

设置的/etc/security/limits.conf文件memlock用户限制。设定值(单位为KB)略小于OS安装的RAM,大于将要分配给oracle的内存总量。
例如如果服务器配置了256GB=264511244KB的内存,你可以设置:264511244*0.8=211608995。
#vi /etc/security/limits.conf
...
oracle   soft   memlock    211608995
oracle   hard   memlock   211608995

重新登录到Oracle产品所有者帐户(例如‘oracle‘),检查memlock限制。 $ ulimit -l 211608995

2.修改vm.nr_hugepages参数

确保所有的数据库实例(包括ASM实例)都已启动。手工计算vm.nr_hugepages>=SGA_Target/Hugepagesize(2M)
如:SGA=143G, vm.nr_hugepages=(143+2)*1024/2=74240
用户编辑文件/etc/sysctl.conf设置vm.nr_hugepages参数:
#vi /etc/sysctl.conf
...
vm.nr_hugepages = 74240
修改后,使参数立即生效
sysctl -p

 


以上是关于Oracle 在Linux下HugePage的配置的主要内容,如果未能解决你的问题,请参考以下文章

LINUX下为ORACLE数据库设置大页--hugepage

LINUX下为ORACLE数据库设置大页--hugepage

linux 多大内存 才启用 hugepage

(Oracle)HugePage Size 计算脚本

Linux 关闭透明大页(transparent_hugepage)和 NUMA

Linux 关闭透明大页(transparent_hugepage)和 NUMA