长期支持版本

    社区创新版本

      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备份