Oracle 标准大页和透明大页

来源:这里教程网 时间:2026-03-03 17:30:13 作者:

说明:

标准大页(HugePages)

标准大页(HugePages)是从 Linux Kernel 2.6 后被引入的。

目的是用更大的内存页面(memory page size)以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。

透明大页(Transparent HugePages)

透明大页(Transparent Huge Pages)缩写为THP,透明超大页面(THP)在RHEL 6中默认情况下对所有应用程序都是启用的。

内核试图尽可能分配巨大的页面,主内核地址空间本身被映射为巨大的页面,减少了内核代码的TLB压力。

内核将始终尝试使用大页来满足内存分配。

如果没有可用的巨大页面(例如由于物理连续内存不可用),内核将回退到正常的4KB页面。

THP也是可交换的(不像hugetlbfs)。

这是通过将大页面分成更小的4KB页面来实现的,然后这些页面被正常地换出。

透明大页存在的问题:

Oracle Linux team在测试的过程中发现,如果linux开启透明大页THP,则I/O读写性能降低30%;

如果关闭透明大页THP,I/O读写性能则恢复正常。

另,建议在Oracle Database中不要使用THP。

ORACLE官方不建议在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明大页(THP),因为透明大页存在一些问题:

1. 在RAC环境下,透明大页(THP)会导致异常节点重启和性能问题;

2. 在单机环境中,透明大页(THP)也会导致一些异常的性能问题;

标准大页和透明大页区别:

两者区别在于大页的分配机制,标准大页管理是预分配 方式,而透明大页管理则是动态分配 方式。

目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。

如何开启标准大页(HugePages)

适用于:

1.Kernel Version 2.6及更高。

2.Oracle AMM内存管理和HugePages不兼容,确保在AMM关闭的情况下启动HugePages。

启用HugePages方法:

1 运行以下命令以确定内核是否支持HugePages

$ grep Huge /proc/meminfo

2 配置memlock

在/etc/security/limits.conf文件中设置memlock值,memlock设置以KB为单位。

当启用HugePages内存时,最大锁定内存限制应至少设置为当前服务器内存的90%。

禁用HugePages内存时,最大锁定内存限制应设置为至少3145728 KB(3 GB)。

例如,如果安装了64 GB RAM,则添加以下条目以增加最大锁定内存地址空间:

*   soft   memlock    60397977

*   hard   memlock    60397977

也可以将memlock值设置为高于SGA要求的值。

再次以oracle用户身份登录并运行ulimit-l命令以验证新的memlock设置:

su - oracle

$ ulimit -l

3 启动实例

检查实例是启动状态

srvctl status instance -d dbname

如果没启动,手动启动实例

srvctl start instance -d dbname -i instance_name -o open

4 使用脚本为当前共享内存段计算hugepages配置的建议值:

root用户下执行

chmod +x hugepages_settings.sh 

./hugepages_settings.sh 

脚本来自My Oracle Support note 401749.1,脚本详细内容见末尾。

5 停止数据库实例

srvctl stop instance -d dbname -i instance_name -o immediate

6 设置vm.nr_hugepages内核参数

写入配置文件,永久生效

vi /etc/sysctl.conf

vm.nr_hugepages=<value from above>

sysctl -p

# sysctl -w vm.nr_hugepages=<value from above> 临时改变,重启失效

7 启动实例

srvctl start instance -d dbname -i instance_name -o open

8 检查可用的hugepages

$ grep Huge /proc/meminfo

如果配置没生效,需要重启服务器

[root@rac1 ~]# grep Huge /proc/meminfo

AnonHugePages:         0 kB

HugePages_Total:     179

HugePages_Free:        9

HugePages_Rsvd:        7

HugePages_Surp:        0

Hugepagesize:       2048 kB

相关推荐