您的位置:首页 > 数据库 > Oracle

Oracle Rac 关闭透明大页

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

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
) 也会导致一些异常的性能问题;

 

 

 
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: