zoukankan      html  css  js  c++  java
  • Transparent Huge Pages

    在RHEL6中,透明大页功能是默认开启的。

    开启该选项后,内核会尽可能地尝试分配大页,如果mmap区域是2mb,那么每个linux进程都会分配到2mb大小的页。如果大页不够用了(比如物理内存不够了),内核会重新分配4KB大小的页。透明大页是可以交换的(swappable),通过将大页转换成小的4KB的页。

    为了有效的使用大页,内核必须找到连续可用的物理内存来进行分配。为此增加了一个内核线程。透明大页和大页类似:但是透明大页是运行时由内核线程khugepaged自动创建的;大页必须在启动前预先分配。

    ORACLE建议关闭透明大页的功能:透明大页会导致节点不可预料的重启,以及RAC的性能问题;透明大页也会导致单节点数据库环境发生不可预料的性能问题或延迟。

    比如RAC节点发生重启后,可能会在ocssd.log中发现以下日志信息:

    2013-05-01 14:30:45.255: [    CSSD][224204544]clssscMonitorThreads clssnmvKillBlockThread not scheduled for 7500 msecs
    2013-05-01 14:30:46.945: [    CSSD][224204544]clssscMonitorThreads clssnmvWorkerThread not scheduled for 8030 msecs 
    

    Mongodb环境也建议关闭透明大页功能。

    检查是否开启了透明大页功能:

    RHEL系统:

    # cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
    [always] never
    

    其他系统:(如果是UEK2内核,2.6.39-400.116.0没有将透明大页编译进去,这个文件就不存在)

    # cat /sys/kernel/mm/transparent_hugepage/enabled
    [always] never

    [always]表示启用
    [never]表示禁用

    因为内核只是对匿名内存块,比如stack、heap使用透明大页,/proc/meminfo中的AnonHugePages也表示内核使用了多少透明大页内存:

    # grep AnonHugePages /proc/meminfo 
    AnonHugePages:  20142080 kB
    

    禁用透明大页的方法:
    1.修改文件/etc/grub.conf,添加一行:

    transparent_hugepage=never
    

    2.修改文件/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
    
  • 相关阅读:
    Vim编辑器-Basic Visual Mode
    Vim编辑器-Windows
    Vim编辑器-Searching
    Vim编辑器-Text Blocks and Multiple Files
    Vim编辑器-Editing a Little Faster
    Vim编辑器-Basic Editing
    Android12系统源码分析:NativeTombstoneManager
    为什么色彩管理很重要?
    使用chrome调试代码时引入jquery
    抖音、微信超火中国红头像制作
  • 原文地址:https://www.cnblogs.com/abclife/p/5257877.html
Copyright © 2011-2022 走看看