Linux 下使用Hugepages

为什么要使用HugePages:

1、减少内存页的数量,可以减少内存和CPU资源的使用

2、HugePages的内存,不会被交换出物理内存

Linux X86-64系统下如果配置:

配置方法:

1、修改/etc/security/limit.conf中的memlock

*   soft   memlock    60397977
*   hard   memlock    60397977


大小单位是KB,需要配置所有实例的SGA<=memlock<物理内存


ulimit -l 查看是否配置正确

2、使用HugePages 不能采用Oracle AMM的内存管理方式,只能使用自动SGA的内存管理方式

3、修改sysctl.conf中的vm.nr_hugepages 


vm.nr_hugepages = 1496


参数的意思是系统中hugepages的数量,每个hugepage的页面大小通过/proc/meminfo中的HPG_SZ项

 

4、关闭数据库 重启操作系统 启动数据库

          cat /proc/meminfo 确认hugepage是否已经使用

 

附:HugePages 使用Troubleshooting

 NewImage

 

在SLES11、RHEL6、OEL6下 需要关闭 Transparent HugePages

Transparent HugePages和传统的HugePages的区别在于,传统的HugePages是在系统启动的时候就配置好了HugePages,而Transparent HugePages是通过khugepaged线程动态配置的,这可能会导致Oracle运行过程中出现一些奇怪的问题,Oracle建议关闭Transparent HugePages功能。

在这些系统下 默认是开启Transparent HugePages的,通过下面的命令查看:

# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never 

 

关闭Transparent HugePages的方法:

1、 在grub的配置文件的kernel那行 后面加上 

transparent_hugepage=never

然后重启操作系统

 

2、在/etc/rc.local中加入下面的几行,然后重启操作系统:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

   

 

 

 

 

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>