zoukankan      html  css  js  c++  java
  • Linux的Transparent Hugepage与关闭方法

    Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变。
    因为Transparent HugePages是在运行时动态分配内存的,所以会带来在运行时内存分配延误。所以ORACLE是建议不使用Transparent HugePages功能的,如果需要大页内存管理功能来加强性能,建议使用标准的大页内存管理。
    MYSQL的TOKUDB强制必须关闭Transparent HugePages功能,否则启动不了数据库。
     
    下面是ORACLE官方的文档:
    下面有关于Transparent HugePages查看和关闭的方式
    https://docs.oracle.com/cd/E11882_01/install.112/e41961/memry.htm#CWLIN385
     

    1.什么是Transparent HugePages?
    Transparent HugePages是RHEL6的新特性。
    为了提升性能,Kernel会将程序缓存在内存中,每页内存以2M为单位。
    想要有效的使用THP,kernel要在内存中找到一系列连续的物理内存来满足需求,也可能会对齐。
    为了达到这个效果,系统新加了一个khugepaged进程,这个进程会偶尔尝试把正在使用的较小页面换到hugepage中。这样就能使hugepage使用达到最大化。


    2.如何关闭THP
    尽管THP的本意是为提升性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MongoDB等),否则可能导致性能下降,内存锁,甚至系统重启等问题。
    比较流行的关闭方法有两种
    第一种:在/etc/rc.local中加入如下两行
    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
     echo never > /sys/kernel/mm/transparent_hugepage/enabled
    fi
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
     echo never > /sys/kernel/mm/transparent_hugepage/defrag
    fi
    第二种:
    1 .编辑 /etc/default/grub,在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never
    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="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"
    GRUB_DISABLE_RECOVERY="true"
    2.重新生成grub配置文件
    On BIOS-based machines, issue the following command as root:
    # grub2-mkconfig -o /boot/grub2/grub.cfg
    On UEFI-based machines, issue the following command as root:
    # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
    step3 重启你的系统
    验证结果
    重启前
    # cat /sys/kernel/mm/transparent_hugepage/defrag
    [always] madvise never
    #
    # cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] madvise never
    #
    # cat /sys/kernel/mm/transparent_hugepage/defrag
    always madvise [never]
    #
    重启后
    # cat /sys/kernel/mm/transparent_hugepage/enabled
    always madvise [never]
    #

  • 相关阅读:
    php实现上传图片保存到数据库的方法
    支付宝集成——如何在回调地址中使用自定义参数
    QQ音乐的各种相关API
    xampp默认mysql密码设置,修改mysql的默认空密码
    node.js 初体验
    php调用empty出现错误Can't use function return value in write context
    ecshop数据库操作函数
    ecshop中$user对象
    为什么我的联想打印机M7450F换完墨粉之后打印机显示请更换墨粉盒?这是我的墨盒第一次灌粉·、
    PHP中获取当前页面的完整URL
  • 原文地址:https://www.cnblogs.com/DataArt/p/9975281.html
Copyright © 2011-2022 走看看