参考文档: HugePages on Oracle Linux 64-bit (文档 ID 361468.1)
注意这里所说的 AMM 指的是 Automatic Memory Management , 不要和 ASMM (Automatic Shared Memory Management ) 混淆了。 ASMM和HugePage是兼容的。
AMM : 设置 MEMORY_TARGET / MEMORY_MAX_TARGET , 动态管理SGA和PGA,不支持 LINUX x86-64 Hugepages 。
ASMM : 在SGA 主要 buffer 中动态分配内存大小 。 是支持 LINUX x86-64 Hugepages的 。
如果使用了大内存和SGA,那么HugePage对提高数据库性能就非常重要。比如 数据库SGA大小超过8G,就需要配置HugePages。那么如果OS使用的是Linux x86-64系统,就需要先禁用AMM , 即设置 MEMORY_TARGET / MEMORY_MAX_TARGET都为 0 。默认情况下ASM instance 也是使用AMM的,但因为ASM 实例不需要大SGA,所以对ASM 实例使用HugePages意义不大。 如果使用AMM,所有的SGA 内存都是在/dev/shm 下分配的,在分配SGA时不会使用HugePage。这也是AMM 与HugePage不兼容的原因。
---- 设置hugepage
第一步: 设置memlock
在/etc/security/limits.conf文件中添加memlock的限制,注意该值略微小于实际物理 内存的大小。 比如物理内存是64GB,可以设置为如下:
* soft memlock 60397977
* hard memlock 60397977
如果这里的值超过了SGA的需求,也没有不利的影响。
The parameters will be set by default on:
Oracle Linux with oracle-validated package (See Document 437743.1) installed.
Oracle Exadata DB compute nodes
第二步: 验证memlock
以Oracle product owner账号登入,使用如下命令查看参数值:
$ ulimit -l
60397977
第三步: 11g中查看参数use_large_pages,默认值是TRUE。并确认没有设置AMM 。
第四步: Use the script hugepages_settings.sh in Document 401749.1 to calculate the recommended value for the vm.nr_hugepages kernel parameter. e.g.:
$ ./hugepages_settings.sh
...
Recommended setting: vm.nr_hugepages = 1496
第五步 : Edit the file /etc/sysctl.conf and set the vm.nr_hugepages parameter there:
...
vm.nr_hugepages = 1496
This will make the parameter to be set properly with each reboot.
第六步 : Stop all the database instances and reboot the server
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-1155704/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-1155704/