欢迎投稿

今日深度:

Oracle Rac关闭透明大页的方法,oraclerac关闭

Oracle Rac关闭透明大页的方法,oraclerac关闭


在移动进行数据库进行规范检查的时候有这么一项 ,要求系统关闭透明大页 。 为什么要关闭透明大页?

Oracle RAC关闭透明大页

透明巨大页面的一些官方介绍资料:

透明超大页面(THP)在RHEL 6中默认情况下对所有应用程序都是启用的。内核试图尽可能分配巨大的页面,如果mmap区域自然对齐2MB,任何Linux进程都会收到2MB页面。主内核地址空间本身被映射为巨大的页面,减少了内核代码的TLB压力。关于Hugepages的一般信息,请参阅:什么是巨大页面以及使用它们的优点?

内核将始终尝试使用巨页来满足内存分配。如果没有可用的巨大页面(例如由于物理连续内存不可用),内核将回退到正常的4KB页面。THP也是可交换的(不像hugetlbfs)。这是通过将大页面分成更小的4KB页面来实现的,然后这些页面被正常地换出。

但为了有效地使用巨大的页面,内核必须找到足够大的物理连续区域以满足请求,并且也要正确对齐。为此,已经添加了一个khugepaged内核线程。此线程偶尔会尝试替换当前正在使用的较小页面,并分配一个大页面,从而最大限度地提高THP的使用率。

在userland中,不需要修改应用程序(因此是透明的)。但有一些方法可以优化它的使用。对于想要使用巨大页面的应用程序,使用posix_memalign()还可以帮助确保大型分配与大页面(2MB)边界对齐。

此外,THP仅针对匿名内存区域启用。有计划添加对tmpfs和页面缓存的支持。THP可调参数位于/ sys / kernel / mm / redhat_transparent_hugepage下的/ sys树中。

查看是否启用透明大页

1:命令cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 该命令适用于Red Hat Enterprise Linux系统

[root@getlnx06 ~]# more /etc/issue

Red Hat Enterprise Linux Server release 6.6 (Santiago)

Kernel \r on an \m

[root@getlnx06 ~]# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

[always] madvise never

2:命令cat /sys/kernel/mm/transparent_hugepage/enabled 该命令适用于其它Linux系统

[root@getlnx06 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

[root@getlnx06 ~]#

使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示

3:如果HugePages_Total返回0,也意味着透明大页禁用了

[root@getlnx06 ~]# grep -i HugePages_Total /proc/meminfo

4:cat /proc/sys/vm/nr_hugepages返回0也意味着透明大页禁用了。

[root@getlnx06 ~]# cat /proc/sys/vm/nr_hugepages

0

禁用、启用透明大页功能

方法1:设置/etc/grub.conf文件,在系统启动是禁用。

[root@getlnx06 ~]# vi /etc/grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup--LogVol0-LogVol01

# initrd /initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup--LogVol0-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup-LogVol0/LogVol01 rd_LVM_LV=VolGroup-LogVol0/LogVol00 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-504.el6.x86_64.img

transparent_hugepage=never

HugePages_Total: 0

方法2:设置/etc/rc.local文件

[root@getlnx06 ~]# vi /etc/rc.local

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

fi

使用上面的配置后必须重启操作系统才能生效,你也可以运行下面命令不用重启操作系统

[root@getlnx06 ~]# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

[root@getlnx06 ~]# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

always madvise [never]

小知识点:

1:从RedHat 6, OEL 6, SLES 11 and UEK2 kernels 开始,系统缺省会启用 Transparent HugePages :用来提高内存管理的性能透明大页(Transparent HugePages )和之前版本中的大页功能上类似。主要的区别是:Transparent HugePages 可以实时配置,不需要重启才能生效配置;

2:Transparent Huge Pages在32位的RHEL 6中是不支持的。

Transparent Huge Pages are not available on the 32-bit version of RHEL 6.

默认情况下,Red Hat Enterprise Linux 6,SUSE Linux Enterprise Server 11和Oracle Linux 6与早期版本的Oracle Linux Unbreakable Enterprise Kernel 2(UEK2)内核一起启用透明HugePages内存。在Oracle Linux UEK2内核的更高版本中禁用透明HugePages内存.Transparent HugePages可能导致运行时内存分配延迟。为避免性能问题,Oracle建议您在所有Oracle数据库服务器上禁用透明超大页面。Oracle建议您使用标准的HugePages来提高性能.Transparent HugePages内存与标准HugePages内存不同,因为内核khugepaged线程在运行时动态分配内存。标准HugePages内存在启动时预先分配,并且在运行时不会更改。

从RedHat 6,OEL 6,SLES 11和UEK2内核开始,实现并启用了透明超大页面(默认)以尝试改进内存管理。透明HugePages类似于以前Linux版本中可用的HugePages。主要区别在于透明HugePages是在运行时由内核中的khugepaged线程动态设置的,而常规的HugePages必须在启动时预先分配。由于透明超大页面已知会导致意外的节点重新启动并导致RAC出现性能问题,因此Oracle强烈建议禁用透明超大页面。另外,即使在单实例数据库环境中,透明超大页面也可能会导致问题,并出现意外的性能问题或延迟。

4:安装Vertica Analytic Database时也必须关闭透明大页功能。

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

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

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

www.htsjk.Com true http://www.htsjk.com/oracle/24526.html NewsArticle Oracle Rac关闭透明大页的方法,oraclerac关闭 在移动进行数据库进行规范检查的时候有这么一项 ,要求系统关闭透明大页 。 为什么要关闭透明大页? Oracle RAC关闭透明大页 透明巨大页面的...
评论暂时关闭