长期支持版本

    社区创新版本

      特性说明

      HCK(High-performance Computing Kit)是HPC应用的软件底座,是在通用Linux平台上通过定制系统调用,调度优化等手段,为HPC应用提供隔离/低底噪的运行环境,同时兼容Linux生态,达到提高HPC应用性能的目的。在构建内核时需要将选项CONFIG_PURPOSE_BUILT_KERNEL开启来使能HCK特性。通过在系统启动阶段隔离出一部分CPU用来运行HPC应用,内核线程和其他用户进程则运行在非隔离核上。

      使用说明

      在内核支持HCK特性前提下,需要在内核启动阶段增加启动参数pbk_cpus设置预留的CPU资源,默认不预留。可以通过修改grub的配置文件grub.cfg或grub的启动界面设置此参数。 启动参数的格式为: pbk_cpus=,cpulist支持","和"-"连接,例如1,3-4表示预留CPU1/CPU3和CPU4。HCK特性暂不支持x86架构,需要注意的是,在aarch64架构下不支持预留0核。 当配置好启动参数后,内核会自动完成CPU资源的隔离预留,系统启动后不需要额外的部署步骤。

      用户态launcher工具使用

      HCK特性有一个用户态的launcher工具,通过其可以指定程序在特定的隔离核上运行,该工具需要单独安装。

      基本选项

      参见 launcher -?:

      Usage: launcher [OPTION...]
      
      launcher: launch process to pbk domain
      
      EXAMPLES:
         launcher -c 1,2 prog        # alloc CPU 1,2 from pbk root domain to run prog
         launcher -n 2 prog          # alloc 2 CPUs from pbk root domain to run prog
         launcher -v prog            # prog will only touch pbk 
         launcher -c 1 prog          # alloc CPU 1 and 1M memory
      
        -c, --cpulist=CPULIST      cpulist to run prog
        -n, --nr_cpu=NR_CPU        nr_cpus to run prog
        -v, --pbk_view             run prog with pbk view
        -?, --help                 Give this help list
            --usage                Give a short usage message
      
      Mandatory or optional arguments to long options are also mandatory or optional
      for any corresponding short options.
      

      选项详解

      launcher -?

      显示该命令的使用说明。

      launcher -c

      指定cpulist运行程序,例如:

      launcher -c 1,2 ./test
      

      launcher将会申请CPU1和CPU2用于执行test程序,如果CPU1和CPU2不是隔离核或者已经被其他程序申请,那么返回失败。

      存在一种例外情况,例如执行以下操作:

      launcher -c 1,2 ./test1
      launcher -c 1,2 ./test2
      

      执行test2时,指定了相同的cpulist,此时不会返回失败,而是将test2也运行到CPU1和CPU2上。

      launcher -n

      指定CPU数量运行程序,例如

      launcher -n 1 ./test
      

      launcher将会从隔离核中申请一个CPU来运行test程序,如果剩余的隔离核不足,则返回失败。

      launcher -v

      在CPU隔离后,CPU资源划分为Linux资源和隔离核资源。为了适配mpirun等具备资源识别分配功能的程序,在launcher中提供修改资源视角的功能,例如:

      launcher -v cat /proc/cpuinfo
      

      此时只会显示隔离核而非所有的CPU。

      此选项还可以结合-n和-c选项使用,例如

      launcher -c 1,2 -v cat /proc/cpuinfo
      

      此时只会显示CPU1和CPU2的信息。

      受影响的procfs和sysfs的接口如下:

      procfs:

      /proc/cpuinfo
      

      sysfs:

      /sys/devices/system/cpu/online
      /sys/devices/system/cpu/present
      /sys/devices/system/cpu/possible
      /sys/devices/system/cpu/cpu<N>/online
      /sys/devices/system/node/node<N>/cpumap
      /sys/devices/system/node/node<N>/cpulist
      /sys/fs/cgroup/cpuset/cpuset.cpus
      /sys/fs/cgroup/cpuset/cpuset.effective_cpus
      

      注:除了cgroup相关的两个接口默认仅显示Linux资源外(这是因为隔离核没有加入到cgroup的cpuset中),其他接口默认都会显示Linux资源+隔离核资源,不受隔离影响。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

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

      一键搞定!

      问题类型
      规范和低错类

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

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

      ● 英文中包含中文字符;

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

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

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

      易用性

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

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

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

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

      正确性

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

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

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

      ● 代码片段错误;

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

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

      风险提示

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

      内容合规

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

      ● 内容侵权;

      您对文档的总体满意度

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