长期支持版本

    native-turbo特性

    简介

    大型程序的代码段、数据段可达数百MB,关键业务流程TLB miss较高。内核页表大小对性能有影响。

    为了方便用户使用大页,native-turbo特性实现了加载程序时自动使用大页的功能,可以针对代码段、数据段使用大页。

    使用方法

    1. 打开特性开关

      该特性有两级开关,sysctl fs.exec-use-hugetlb用于控制本系统是否打开该特性(由root用户控制,0不打开,1打开,其他值非法)。

      如果不打开该开关,即使用户设置了环境变量也不会使用该特性,内核会忽略相关流程。

      系统打开该特性后,普通用户可以通过环境变量HUGEPAGE_PROBE自行决定运行的程序是否需要使用大页(1使用,不设置或其他值不使用)。

      sysctl fs.exec-use-hugetlb=1 #主程序使用大页
      export HUGEPAGE_PROBE=1 #动态库使用大页
      

      动态库大页也可以使用LD_HUGEPAGE_LIB=1环境变量强制所有段使用大页。

    2. 标记需要使用大页的段,默认标记所有段,-x表示仅代码段,-d清除已有标记。

      hugepageedit [-x] [-d] app
      

      该工具由glibc-devel包提供。

    3. 启动程序

      ./app

    约束限制

    1. 程序与动态库必须按照2M对齐编译,可通过添加如下gcc编译参数实现:

      -zcommon-page-size=0x200000 -zmax-page-size=0x200000
      
    2. 使用前需要预留足够的大页,否则程序会执行失败。

      如果使用cgruop,请注意hugetlb的限制,如果限制小于所需大页数量,可能导致运行时崩溃。

    3. 由于进程页表改为2M,mprotect等系统调用的参数需要按2M对齐,否则会执行失败。

    4. 不支持libcareplus热补丁机制。

    5. 多个进程间无法共享大页,会消耗多倍内存。

    文档捉虫

    “有虫”文档片段

    问题描述

    提交类型 issue

    有点复杂...

    找人问问吧。

    PR

    小问题,全程线上修改...

    一键搞定!

    问题类型
    规范和低错类

    ● 错别字或拼写错误;标点符号使用错误;

    ● 链接错误、空单元格、格式错误;

    ● 英文中包含中文字符;

    ● 界面和描述不一致,但不影响操作;

    ● 表述不通顺,但不影响理解;

    ● 版本号不匹配:如软件包名称、界面版本号;

    易用性

    ● 关键步骤错误或缺失,无法指导用户完成任务;

    ● 缺少必要的前提条件、注意事项等;

    ● 图形、表格、文字等晦涩难懂;

    ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

    正确性

    ● 技术原理、功能、规格等描述和软件不一致,存在错误;

    ● 原理图、架构图等存在错误;

    ● 命令、命令参数等错误;

    ● 代码片段错误;

    ● 命令无法完成对应功能;

    ● 界面错误,无法指导操作;

    风险提示

    ● 对重要数据或系统存在风险的操作,缺少安全提示;

    内容合规

    ● 违反法律法规,涉及政治、领土主权等敏感词;

    ● 内容侵权;

    您对文档的总体满意度

    非常不满意
    非常满意
    提交
    根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
    文档捉虫
    编组 3备份