签到成功

知道了

CNDBA社区CNDBA社区

Linux 7.4 中关闭透明大页(Transparent Huge Pages)

2018-03-02 00:03 8837 0 原创 Oracle 18c Linux
作者: dave

1 THP 背景知识补充说明

在Linux6.x之后的平台,在安装Oracle数据库的时候都建议关闭透明大页。之前也写过一篇关于透明大页的文章:

Linux Transparent Huge Pages 对 Oracle 的影响
http://www.cndba.cn/dave/article/312

Linux下的大页分为两种类型:标准大页(Huge Pages)和透明大页(Transparent Huge Pages)。http://www.cndba.cn/dave/article/2673

  1. 1). 标准大页(Huge Pages)是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应越来越大的系统内存,让操作系统可以支持现代硬件架构的大页面容量功能。
  2. 2). 透明大页(Transparent Huge Pages)缩写为THP,这个是RHEL 6开始引入的一个功能。

这两者的区别在于大页的分配机制,标准大页管理是预分配的方式,而透明大页管理则是动态分配的方式。目前透明大页与传统大页混合使用会出现一些问题,导致性能问题和系统重启。ORACLE官方不建议在使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 时开启透明大页(THP), 因为透明大页存在一些问题:
1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启和性能问题;
2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题;http://www.cndba.cn/dave/article/2673

2 关闭THP

在之前的文章中我们演示了在Linux 6.x 中国关闭透明大页的方法:http://www.cndba.cn/dave/article/2673

Linux Transparent Huge Pages 对 Oracle 的影响
http://www.cndba.cn/dave/article/312

http://www.cndba.cn/dave/article/2673

这里补充一下Linux 7.4中的关闭方法。 当然Oracle Linux 默认已经关闭了THP,可以不用再进行关闭,但如果是Redhat 6,7,SUSE 11 那么还是需要手工来操作的。http://www.cndba.cn/dave/article/2673

首先检查THP是否启动:

[dave@www.cndba.cn ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.4 (Maipo)
[dave@www.cndba.cn ~]# uname -r
3.10.0-693.el7.x86_64
[dave@www.cndba.cn ~]# uname -a
Linux dave 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
[dave@www.cndba.cn ~]#

[dave@www.cndba.cn ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[dave@www.cndba.cn ~]#

注意:如果没有这个文件,那么检查:http://www.cndba.cn/dave/article/2673

/sys/kernel/mm/redhat_transparent_hugepage/enabled

如果/sys/kernel/mm/transparent_hugepage 和 /sys/kernel/mm/redhat_transparent_hugepage 2个文件都不存在,那么就是在系统内核中移除了THP。

Linux 6

在Linux 6或者更早的版本中按以下步骤禁用:http://www.cndba.cn/dave/article/2673

http://www.cndba.cn/dave/article/2673

在grub.conf 文件中添加:transparent_hugepage=never。 这种方法在修改后需要重启OS才能生效。
[root@www.cndba.cn ~]# cat  /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,1)
#          kernel /vmlinuz-version ro root=/dev/sda4
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda1
device (hd0) HD(1,800,3e8000,ad383463-7239-443a-83c6-7b8c6539a458)
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
root (hd0,1)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=65b6fe1a-6897-4a16-9cf6-e8dfcc89b7ce rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never
initrd /initramfs-2.6.32-573.el6.x86_64.img
linux 7

在Linux 7 之后,需要修改/etc/default/grub文件,添加transparent_hugepage=never,然后执行grub2-mkconfig,最后在重启系统:

http://www.cndba.cn/dave/article/2673
http://www.cndba.cn/dave/article/2673

[dave@www.cndba.cn ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

[dave@www.cndba.cn grub2]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-4ea362360a8f4c5388edf0ad788ae256
Found initrd image: /boot/initramfs-0-rescue-4ea362360a8f4c5388edf0ad788ae256.img
done
[dave@www.cndba.cn grub2]#


[dave@www.cndba.cn grub.d]# reboot

--验证:成功关闭
[dave@www.cndba.cn ~]# cat /proc/cmdline  
BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=UUID=b9ab8ce8-a487-4046-947f-1f80d2feb9d4 ro crashkernel=auto rhgb quiet transparent_hugepage=never
[dave@www.cndba.cn ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[dave@www.cndba.cn ~]#

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 546
    转载
  • 186
    评论
  • 访问:6602012次
  • 积分:4248
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ