在64位操作系统下,为oracle SGA启用huge pages memory mapping,可以更高效地使用系统内存。
有关huge pages和oracle的内存分配,可以参见下面两篇文章,讲解非常详细,推荐一看。
Memory
Pythian Goodies: The Answer to Free Memory, Swap, Oracle, and Everything
平台: Red Hat Linux Enterprise 5.3 64 bit, Oracle 10gR2 10.2.0.4 64 bit
启用huge pages的步骤。
查看默认的small page size
# getconf PAGE_SIZE
4096
查看huge page size
# grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
对比以上可以看出,一个是4k,一个是2M
假设要为SGA分配4G内存,则需要4G/2M=2048 pages
我们要在/etc/sysctl.conf里添加一句
vm.nr_hugepages = 2052 #比2048稍大
# echo "vm.nr_hugepages = 2052" >> /etc/sysctl.conf
# sysctl -p
huge pages使用时会锁在内存中,不会被交换出去
需要在/etc/security/limits.conf里添加如下内容 (16777216KB是基于可扩展性考虑,大于4GB即可)
# cat >> /etc/security/limits.conf <> oracle soft memlock 16777216
> oracle hard memlock 16777216
> EOF
#
重启oracle instance,然后查看huge page使用情况
# cat /proc/meminfo |grep Huge
HugePages_Total: 2052
HugePages_Free: 1702
HugePages_Rsvd: 1699
Hugepagesize: 2048 kB
有关huge pages和oracle的内存分配,可以参见下面两篇文章,讲解非常详细,推荐一看。
Memory
Pythian Goodies: The Answer to Free Memory, Swap, Oracle, and Everything
平台: Red Hat Linux Enterprise 5.3 64 bit, Oracle 10gR2 10.2.0.4 64 bit
启用huge pages的步骤。
查看默认的small page size
# getconf PAGE_SIZE
4096
查看huge page size
# grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
对比以上可以看出,一个是4k,一个是2M
假设要为SGA分配4G内存,则需要4G/2M=2048 pages
我们要在/etc/sysctl.conf里添加一句
vm.nr_hugepages = 2052 #比2048稍大
# echo "vm.nr_hugepages = 2052" >> /etc/sysctl.conf
# sysctl -p
huge pages使用时会锁在内存中,不会被交换出去
需要在/etc/security/limits.conf里添加如下内容 (16777216KB是基于可扩展性考虑,大于4GB即可)
# cat >> /etc/security/limits.conf <> oracle soft memlock 16777216
> oracle hard memlock 16777216
> EOF
#
重启oracle instance,然后查看huge page使用情况
# cat /proc/meminfo |grep Huge
HugePages_Total: 2052
HugePages_Free: 1702
HugePages_Rsvd: 1699
Hugepagesize: 2048 kB
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/441887/viewspace-667363/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/441887/viewspace-667363/