百度用Btune分析CPU与XPU协同中的锁竞争
概述
Btune 1.0 基于 USE(利用率、饱和度、错误)与 TSA(线程状态分析)方法构建五大瓶颈分析树。面对 AI 场景下 CPU+GPU 协同计算与多进程关联干扰,2.0 做架构级升级为负载画像 + 性能诊断树 + AI 智能体三层:诊断维度由五大领域扩展到 CPU、内存、磁盘、网络、GPU/XPU、互联、并行度、耗时八大领域,不只关注资源是否被占用更关注时间花在哪,并新增内核耗时分析模块,把耗时拆解为调度耗时(线程在就绪队列的等待)、中断/软中断抢占耗时、系统调用耗时、任务抢占耗时、不可中断等待耗时(D 状态,因 I/O 或锁等待导致的进程阻塞)五类。 Agent 融合硬件数据、知识库与实时画像执行多维建模,按内置诊断树推理决策并调用锁分析、调用栈采集等工具链,最终产出成本分析报告(资源浪费点)与性能分析报告(瓶颈根因与优化建议)。案例一(推理侧):一年前某核心推理服务从 GPU 集群迁移至全国产化 AI 算力 XPU 集群,前端请求打满的高负载下有效 QPS 显著低于理论值且 CPU 与 XPU 利用率大幅波动偏低。 业务团队只看到资源利用异常无法解释成因,PaaS 团队对比发现 Docker 直接部署正常、经容器平台以 K8s Pod 部署时劣化,基础组件团队逐个停用 Agent 后锁定基础组件 halolet,硬件团队用 Btune 1.0 热点分析发现瓶颈集中在 xxx_unlocked_loctl 锁。根因为 halolet 频繁调用驱动接口长期持有该内核锁,阻塞 CPU 对加速卡的任务编排,使 CPU 与 XPU 相互等待。 优化 halolet 的接口调用逻辑后推理服务性能得以恢复。案例二(训练侧):某数字人模型训练吞吐忽高忽低、平均性能下降且传统手工排查无果,Btune 2.0 Agent 全方位采样后先排除 XPU 计算与互联 IO 瓶颈,聚焦异常的不可中断等待耗时,在时间窗口内持续扫描目标进程记录 D 状态时间分布与内核调用栈、自动标记超阈值阻塞点并获取锁对象名称与内核地址,再按锁对象内核地址跨进程关联到长时间占锁的元凶进程。 研发按报告对元凶进程优化后训练吞吐稳定性显著提升。