【TUNE_ORACLE】Oracle数据库与HugePages(二)HugePages配置和限制

来源:这里教程网 时间:2026-03-03 16:33:28 作者:

说明

相关文章链接:

Oracle数据库与HugePages(一)HugePages概念和优势: http://blog.itpub.net/69992972/viewspace-2763625/

Oracle数据库与HugePages(二)HugePages配置和限制: http://blog.itpub.net/69992972/viewspace-2764357/

Oracle数据库与HugePages(三)HugePages常见问题和解决办法: http://blog.itpub.net/69992972/viewspace-2764597/

Oracle数据库与HugePages(四)如何禁用透明大页: http://blog.itpub.net/69992972/viewspace-2764784/ Hugepages配置限制HugePages有以下限制:1. 必须取消MEMORY_TARGET和MEMORY_MAX_TARGET初始化参数的设置。例如,要取消数据库实例的参数设置,可以使用ALTER SYSTEM RESET命令。2.  自动内存管理(AMM)和HugePages是不兼容的。当使用AMM时,整个SGA内存是通过在/dev/shm 下创建文件分配的当Oracle数据库使用AMM分配SGA时,不会保留HugePages。要在Oracle数据库11g及以上版本上使用HugePages,必须禁用AMM。3. 如果在32位环境中使用VLM(Very Large Memory),则不能将HugePages用于数据库缓冲区缓存。可以将HugePages用于SGA的其他部分,如shared_pool、large_pool等。VLM(buffer cache)的内存分配是使用共享内存文件系统(ramfs/tmpfs/shmfs)完成的。内存文件系统不保留或使用HugePages。4.  在系统启动后,HugePages不受分配或释放的约束,除非系统管理员通过修改可用页面的数量或修改池大小来更改HugePages配置。如果在系统启动期间没有在内存中保留所需的空间,则HugePages分配失败。5.  确保正确配置了HugePages,因为如果应用程序没有使用足够多的HugePages, HugePages将不会被使用,但任然占用内存空间,此时会使用其他非 HugePages的内存,因此系统可能会耗尽内存。6. 如果在实例启动时没有足够的HugePages,并且初始化参数use_large_pages被设置为only,那么数据库将无法启动,并且一个警报日志消息将提供关于HugePages的必要信息。  如何在Linux上使用HugePages要使Oracle数据库能够在Linux上使用large pages(有时称为HugePages),需要设置vm.nr_hugepages内核参数,用于指定要保留的HugePages的数量。 必须指定足够的HugePages来容纳数据库实例的整个SGA(一般比SGA大十几兆就够了,多了会浪费内存空间,但是本人在工作中发现极少部分系统的SGA大小波动,有时会导致多十几兆也不够用,导致 HugePages失效发生内存泄漏,因此把 HugePages多设置128M就再没发生过内存泄漏。要确定所需的参数值,需将实例的SGA大小除以大页的大小,然后将结果四舍五入到最接近的整数。要确定默认的HugePages大小,运行以下命令:# grep Hugepagesize /proc/meminfo例如,如果/proc/meminfo列出的HugePages大小为2 MB,而实例的总SGA大小为1.6 GB,那么设置vm.nr_hugepages内核参数为820 (1.6 GB / 2 MB = 819.2)。  如何在Linux上配置HugePages1.运行以下命令来确定内核是否支持HugePages: $ grep Huge /proc/meminfo2.在/etc/security/limit .conf文件中编辑memlock设置。memlock设置以KB为单位指定, 当启用HugePages内存时,最大锁定内存限制应该至少设置为当前RAM的90% ,当禁用HugePages内存时,应该至少设置为3145728 KB (3 GB)。例如,如果你安装了64 GB的内存,那么添加以下条目来增加最大的锁定内存地址空间: *   soft   memlock    60397977 *   hard   memlock    60397977也还可以将memlock的值设置得高于SGA要求。3.再次以oracle用户身份登录,运行ulimit -l命令,验证新的memlock设置: $ ulimit - l603979774.运行以下命令显示Hugepagesize变量的值: $ grep Hugepagesize /proc/meminfo5.运行hugepages_settings.sh脚本来计算hugepages配置的值6.将以下条目添加到/etc/sysctl.conf文件中,其中的值是HugePages值 vm.nr_hugepages =<value>7.重新启动OS和实例8.运行以下命令检查可用的hugepages(1 or 2 page空闲): $ grep Huge /proc/meminfo注意:如果不能使用nr_hugepages去设置HugePages分配,那么可用内存可能会被分割。需重新启动服务器,以便使Hugepages分配生效。

相关推荐