鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

绑核优化

适用于运行过程中出现跨NUMA访问较多、线程切换开销大、Host下发任务慢等场景。此处推荐使用方法三。

绑核过程中,NUMA节点对应的CPU核组可以通过命令lscpu查看。

方法一:使用taskset进行绑核

启动时直接将进程绑定在设置的核心上(此方法会被后续方法覆盖)。

taskset -c 0-31 python3 app.py

方法二:粗粒度绑核

由vllm框架自动将所有任务绑定在NPU对应NUMA的CPU核心上,避免跨NUMA节点的内存访问,并支持粗粒度绑核上的自定义绑核(会覆盖方法一)。

export CPU_AFFINITY_CONF=1

方法三:细粒度绑核(推荐)

在粗粒度绑核的基础上进一步优化,将主要任务锚定在NUMA节点的某固定CPU核心上,减少核间切换的开销。

export CPU_AFFINITY_CONF=2

方法四:自定义绑核

自定义NPU的绑核范围。

  • 取值表示第value1张卡绑定在value2到value3的闭区间CPU核心上。例如,npu0:0-2表示运行在编号为0的NPU上的进程会绑定到编号为0、1、2的CPU核心。
  • mode=1时此项设置生效,mode=1时可以缺省该项。
  • 支持部分NPU卡自定义绑核。

例如,有两张卡npu0和npu1,对于设置CPU_AFFINITY_CONF=1,npu0:0-0,绑核策略中0卡会被覆写为绑定0核,而1卡则保持mode=1的绑核策略。

export CPU_AFFINITY_CONF=1,npu0:0-1,npu1:2-5,npu3:6-6