绑核优化
适用于运行过程中出现跨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
父主题: 性能调优