cpu cachemiss资源冲突与受限问题分析
问题背景
客户业务模型分别基于 Ascend+Kunpeng(A+K) 与 Ascend+X86(A+X) 两套架构部署运行。在同等业务负载、模型参数及硬件规格对标场景下,A+K 平台整体业务性能相较于 A+X 平台存在明显劣化,核心吞吐、延迟指标不达标。为明确性能差异根因,开展全链路性能拆解、调度溯源及底层CPU异常专项定位分析。
问题现象
对标 A+X 平台运行指标,A+K 平台业务核心性能指标全面落后,其中 TPOT(单Token耗时)、TTFT(首Token延迟) 指标劣化显著,整体推理吞吐偏低、请求延迟抖动较大,无法满足业务上线性能标准。初步排查无算子报错、无NPU计算异常、无通信链路报错,判定为宿主机CPU侧调度或系统层异常导致的整机性能瓶颈。
定位过程
本次定位采用「性能拆解→集群rank对比→慢卡定位→空泡溯源→内核调度分析→PMU硬件指标佐证→方案验证」的逐层收敛思路,完整定位流程如下:
- 双平台Profiling数据拆解,锁定通信瓶颈 分别采集 A+K、A+X 双平台模型全量 Profiling 性能数据,对计算耗时、通信耗时、CPU空闲耗时进行分层拆解对比。数据结果显示:A+X平台业务通信耗时占比为40%,而A+K平台通信耗时占比高达51%,通信开销显著偏高,初步判定A+K平台存在明显的跨卡通信瓶颈,是性能劣化的首要表象。
- 集群数据可视化分析,定位硬件慢卡节点 基于 MindStudio Insight 工具导入 A+K 集群多 Rank 性能数据,置顶所有 Rank 的通信算子耗时进行横向比对。分析发现集群内 Rank 间耗时不均衡,单一 Rank 通信耗时显著偏低,其余大部分 Rank 通信耗时偏高。集群呈现明显的「快等慢」调度特征,所有正常 Rank 需等待该异常 Rank 完成通信任务后才能进入下一流程,确定该异常 Rank 为集群慢卡节点。
- 慢卡精细化分析,发现算子下发空泡问题 针对已锁定的慢卡 Rank 进行算子链路逐段拆解,对比正常 Rank 运行特征:该慢卡 Rank 存在算子下发耗时长、下发链路不连续的问题,且在相邻两次算子下发间隙存在大量CPU空泡时段,无有效任务调度执行,大量时间片被空耗,直接导致整体流水线阻塞、通信任务堆积,进一步放大集群等待耗时。
- 采集内核ftrace数据,排查CPU线程异常根因 为定位CPU空泡、算子下发卡顿的底层原因,使用官方ftrace采集工具完成内核调度数据采集,工具详情参考:ftrace_tools工具([https://gitcode.com/Ascend/msinsight/tree/master/scripts/ftrace_tools])。 通过采集模型运行全过程的CPU调度、线程切换、中断事件,分析空泡时段的系统行为。 针对空泡卡顿现象,梳理四大潜在诱因:① 线程被硬中断/软中断抢占阻塞;② 线程存在锁竞争、持锁等待;③ CPU Cache Miss异常偏高;④ 业务线程执行异常长耗时分支逻辑。 结合ftrace调度日志与业务运行日志交叉核验:排除中断抢占、锁竞争问题,同时排除业务代码异常分支长耗时问题,最终锁定CPU Cache Miss异常为核心可疑根因。
- 采集cpu pmu数据,包括cachemiss等指标 为验证Cache Miss异常猜想,使用性能观测工具采集CPU PMU硬件性能指标,工具详情参考:[function_monitor工具](../../../misc/function_monitor/README.md)。 精准匹配算子下发空泡、CPU卡顿的异常时段,对应时段CPU Cache Miss指标大幅飙升,数据高度吻合。最终确认:CPU Cache Miss高频异常,导致CPU指令执行效率骤降、线程调度卡顿,进而产生大量任务空泡。
- 使用绑核操作,优化cachemiss情况 Cache Miss异常本质为多进程抢占CPU资源、上下文频繁切换导致缓存失效。基于宿主机绑核优化脚本进行CPU亲和性绑定优化,工具详情参考:绑核脚本。通过将业务进程固定绑定至指定CPU核心,隔离无关进程抢占,减少CPU频繁调度切换,有效规避缓存刷新失效问题,从底层解决Cache Miss偏高的问题。
问题根因
- 直接根因:A+K平台部署环境未做CPU资源隔离,业务进程与系统其他进程抢占CPU核心资源,引发频繁的CPU上下文切换,导致CPU Cache Miss命中率严重劣化,CPU指令执行效率大幅下降。
- 传导瓶颈:CPU调度卡顿造成模型算子下发延迟、下发链路出现大量空泡,单Rank算子下发及通信任务耗时拉长。
- 集群级劣化:单节点慢卡形成集群短板,触发「多Rank等待单Rank」的集群阻塞效应,整体通信耗时占比飙升,最终造成TPOT、TTFT等核心性能指标全面劣化,低于A+X平台性能水平。
定位方法论总结
针对 A+K架构性能劣化、集群Rank耗时不均、通信占比偏高、CPU空泡卡顿 类问题,可固化标准化定位流程,快速收敛根因:
- 对标基线筛查:搭建同负载、同模型的双平台对标环境,通过Profiling数据分层拆解(计算、通信、空闲耗时),快速定位性能瓶颈域;
- 集群慢卡定位:通过MindStudio Insight多Rank数据横向对比,识别集群快慢卡差异,确认是否存在单节点短板拖累整体性能;
- 应用层链路分析:针对慢卡节点拆解算子下发时序,排查下发延迟、任务空泡、流水阻塞等应用层异常;
- 内核层调度溯源:通过ftrace工具采集内核调度、线程、中断事件,逐层排除中断、锁竞争、代码异常等干扰项;
- 硬件指标佐证:通过PMU性能指标采集,精准定位Cache Miss、CPU调度等底层硬件瓶颈;
- 专项优化验证:针对CPU抢占、缓存失效问题,通过绑核、资源隔离等手段落地优化,验证性能恢复效果。
对工具的改进建议
结合本次全流程定位经验,对现有运维分析工具链提出优化建议,提升同类问题定位效率:
- ftrace工具新增异常自动识别能力:当前工具仅支持原始调度数据采集,需人工分析线程、中断、切换异常。建议新增CPU空泡、频繁上下文切换、线程阻塞的自动识别与统计,直接输出异常时段与异常线程,降低人工分析成本。
- function_monitor工具增加场景化关联分析:建议将PMU的Cache Miss指标与模型算子下发、通信任务做时间轴自动关联,实现「硬件异常-业务耗时」自动匹配,无需人工对标时段。
- 绑核工具增加预检与推荐能力:新增业务进程CPU占用热力分析,自动推荐最优绑核区间,同时增加绑核前后Cache Miss、调度耗时对比统计,直观展示优化收益。
- 工具链联动整合:打通ftrace、function_monitor、Profiling数据格式,支持多源数据一键导入MindStudio Insight联合可视化,实现应用层、内核层、硬件层数据统一分析。