🚀 2025 年中国信息通信研究院《OSCAR 尖峰开源项目及开源社区》、腾讯科技《杰出贡献奖》、CNCF Landscape。欢迎 GitHub ❤️

博客

面向 Agent 沙箱的内核全景观测|滴滴开源 CCF 中国开源大会分享回顾

近期,CCF中国开源大会在重庆山城国际会议中心开幕。大会以“渝见开源,数智启新”为主题,围绕泛在操作系统、具身智能、开源供应链安全等前沿方向,为参会者带来了行业技术干货。

大会上,滴滴 HUATUO 华佗开源项目负责人张同浩带来了《面向 Agent 沙箱的内核全景观测》主题分享,介绍 HUATUO 在内核观测、异常捕获和性能分析方面的探索。下面将从 AI 时代的系统观测挑战出发,带大家了解 HUATUO 如何构建面向 Agent 沙箱的内核全景观测能力。

项目地址:https://github.com/ccfos/huatuo

项目官网:https://huatuo.tech/

背景和挑战

云原生时代

  • 容器虚拟化,共享内核,资源混部以及服务网格等技术的引入增加了基础架构的复杂度,间接增加了系统故障定位的复杂度。
  • 在生产实践中,当出现问题时,往往需要进行服务的止损,降级,以及容器的迁移和重建等操作,这些操作导致了故障现场的丢失。然而,线下复现故障往往需要投入大量的人力物力,最后也未必能够复现,即使复现也无法完全保证根因一致。
  • 其次,我们面临的问题更加复杂,之前解决的问题都是周期性,可复现的问题。然而现在面临的问题更加复杂化,从周期性问题已经演进为了间接性,不可复现问题。这些问题存在窗口非常短,触发条件非常苛刻。
  • 面对这些业务痛点,更棘手的问题是当时行业内并没有有效的、观测内核微观异常的工具。

AI 时代

然而到了AI 时代,又新增了很多挑战首先 Agent 沙箱工作负载呈现高并发,资源突发的特点,并且这些工作负载资源画像,很难预测。在 AI 训练场景中,硬件已成为关键资源,任何单点硬件异常都可能拖慢整体训练速度、甚至训练任务失败。

解决方案

面对这些挑战我们的解决方案是什么? 要实现系统故障分析,首先要完成系统可观测,现场可追溯,故障可分析的目标。

  • 如何解决内核版本兼容和稳定性问题?eBPF技术的出现,使得内核可编程,并能够安全的运行用户定制代码。采用 eBPF 可以替换传统的内核模块实现问题分析。eBPF+内核动态追踪技术,可以实现零侵入的、低损耗的、安全的执行观测埋点。
  • 如何解决系统与业务数据串联问题?系统层面和应用层面的数据天然存在隔离,但在故障定位中,必须实现系统层面观测数据与应用业务层面数据的串联,这样才能够真正的定位到故障根因。通过在内核侧感知cgroup创建事件,将容器ID和内核cgroup地址进行关联,所有的内核事件都带上cgroup地址,最后在用户态完成解析关联。
  • 如何实现系统层面的可观测?HUATUO 华佗开源项目综合使用 kprobe、tracepoint、ftrace、perf event 和 eBPF 等动态追踪能力,在不修改业务代码的前提下,从宿主机内核侧获取指标、事件和调用栈,并把能力分成五层:
    • 内核全景指标,通过eBPF实现更加精细化内核指标采集,把“系统慢”定界到具体子系统,如调度,协议栈或者BlockIO等。
    • 异常事件感知,在关键系统的异常路径,慢速路径,常态挂钩。保留内存,调度,网络异常现场,避免故障恢复后证据丢失。
    • 全自动换追踪 AutoTracing, 通过滑动窗口,阈值触发,自动采集火焰图、内核栈、进程和文件快照。这种方式兼顾低损耗与观测深度。
    • 持续性能剖析。在传统火焰图基础之上,增加时间维度,实现对历史时间内热点回溯,解决性能抖动问题。
    • 异构硬件感知。此外该项目也支持 AI 计算场景下的硬件(包括ECC、AER、PCIe、GPU/NPU、RoCE等)故障感知,提升 AI 训练的有效时常。

全栈观测底座

有了上面的顶层设计之后,需要实现具体观测能力。因此,我们实现了全栈观测底座。

全栈观测,全景覆盖

  • 全网络协议栈观测。实现从物理链路、驱动、协议栈到用户态的全链路观测,覆盖收发延迟、硬件与软件层面的丢包检测、报文重传以及 TCP 收发队列状态。
  • I/O 全栈观测。以 inode 为核心,对进程级 I/O 生命周期进行端到端追踪,涵盖 VFS、文件系统、Page Cache、Block Queue、驱动直至物理设备。通过关联丰富的上下文信息,定位 I/O 响应缓慢的根本原因。
  • CPU 争抢检测。在高密度沙箱节点环境中,单纯依赖 CPU 使用率无法有效反映资源争抢状况。HUATUO 关注容器内部争抢和外部争抢(这对 Agent 沙箱尤其关键,因为一个任务的延迟既可能来自自身并发,也可能来自“噪声邻居”):
    • 内部争抢:同一容器内线程数超过可用 CPU;
    • 外部争抢:容器与节点上的其他工作负载竞争 runqueue;
    • 调度延迟:任务已 runnable,却迟迟没有获得 CPU;
  • 通用系统观测。HungTask、Softlockup、IRQ/SoftIRQ 延迟和内存回收共同覆盖了系统级停顿。它们能发现平均利用率无法描述的短时异常,例如某个 CPU 长时间关中断、D 状态任务堆积,或容器直接内存回收阻塞。

异常即捕获,而非事后猜测

指标适合观察趋势,事件更适合保留边界明确的异常现场。HUATUO 将 eBPF 程序挂到内核的异常路径或慢速路径:事件触发时,在内核态收集进程、调用栈、网络或硬件上下文,通过 Perf Event Buffer 交给用户态处理,再执行过滤、容器关联和持久化。

AutoTracing 自动捕获毛刺

很多性能问题既不是清晰的内核异常,也无法靠平均指标复现。例如容器 CPU 突然冲高 10 秒、磁盘 await 连续抖动、匿名内存快速增长,等工程师介入时已经恢复。

AutoTracing 的做法是:实时监测系统异常,通过滑动窗口、EMA、增量阈值或连续超阈判断异常。阈值并不是不可改变的常量:项目提供了生产经验默认值,但在不同 CPU 配额、磁盘介质和任务密度下,仍应根据基线进行校准。

火焰图把“CPU 高”进一步转换成函数和调用路径。左侧 Top Table 适合快速寻找热点符号,右侧火焰图适合分析调用关系。对沙箱节点而言,还可以把目标限制到对应的 VMM PID、线程组或 cgroup,避免全机聚合掩盖单个 Sandbox 的热点。

持续性能剖析,让现场可回溯

AutoTracing 解决“异常时自动抓一次”,持续性能剖析解决“问题在一段时间内如何演进”。传统临时采样把所有数据聚合成一张图,缺少时间线;持续剖析按窗口保留结果,使偶发慢变成可以搜索、对比和回溯的历史现场。HUATUO 的统一 profiler 目前覆盖:

其中 Off-CPU 剖析尤其适合分析“CPU 不高但请求很慢”的问题。它把线程离开 CPU 的时间归因到切出时的调用路径,并区分阻塞等待和 runqueue 调度等待:前者更可能指向 I/O、锁或条件变量,后者更可能指向 CPU 争抢。

原生内存剖析则区分三个经常被混在一起的概念:

  • virtual_alloc:申请了多少虚拟地址空间;
  • physical_alloc:采集窗口内实际分配了多少物理页;
  • physical_usage:采集时仍有多少物理页驻留。

图:物理内存驻留按进程与调用路径聚合,可以从“节点内存高”下钻到具体分配路径。

在单机现场,可以直接使用 CLI:

在平台侧(huatuo-apiserver),Profiling API 可以完成能力查询、创建任务、查看状态和结果、获取原始数据、停止及删除任务。由此,临时命令进一步演进成服务化、任务化的持续剖析平台能力。

从 RAS 到 GPU/NPU

AI 基础设施中,硬件问题并不总以“设备掉线”的方式出现。ECC 可纠正错误持续升高、PCIe 链路降宽、AER 错误、GPU 降频或 RoCE 重试,都可能先表现为吞吐下降或长尾延迟。

HUATUO 通过 Linux RAS 体系中的 MCE、EDAC、ACPI GHES 和 PCIe AER 捕获结构化硬件事件,进入告警与审计链路:

图 3:硬件错误从 CPU、内存、平台和 PCIe 设备进入内核 RAS 子系统。

这套能力主要服务于四类目标:

  • 提前预警:同一 DIMM 的 ECC CE 频率持续升高时,支持提前换件;
  • 故障隔离:GPU、HCA、PCIe 或网卡链路异常时,支持隔离节点和迁移任务;
  • 性能退化定位:把 NVMe/HBA AER 与 I/O 延迟关联,区分软件、设备和链路问题;
  • 审计复盘:保留时间、设备 BDF、严重级别和原始字段,形成可追溯证据。

关键不是增加一批孤立的硬件指标,而是把硬件事件与同一时间窗口内的调度、网络、I/O 和剖析数据关联起来。只有这样,平台才能判断一次 Agent 卡顿到底来自软件调用路径,还是来自底层设备退化。

Agent 沙箱层级关联

探针采集到内核栈之后,仍然要回答“这是谁的现场”。容器环境可以利用 cgroup CSS、网络命名空间和容器运行时元数据完成关联;微虚拟机沙箱还需要补充 Sandbox 与 VMM 的映射。

社区进展

HUATUO 华佗项目于2025年由滴滴公司正式开源,并捐赠给中国计算机学会(CCF),经过持续建设,项目已逐步从滴滴内部的技术实践走向更广泛的开源社区。

截至 2026 年 8 月,HUATUO 已发布 v2.3.0,拥有约 1.1k GitHub Stars、51 位贡献者和 1,310 次提交,镜像拉取量超过 15k,并已在 20 多家企业部署。与此同时,沐曦、华为昇腾社区等也持续向 HUATUO 社区贡献 GPU/NPU 相关能力,推动项目进一步拓展 AI 基础设施场景。

在开源社区建设与技术创新方面,HUATUO 也获得了来自产业与社区的认可。项目入选《CCF-光华青年开源专项基金种子计划重点级项目》,同时进入 CNCF Landscape,并被 eBPF 基金会列为新兴项目。

面向 Agent 和 AI 基础设施,HUATUO 社区也将围绕以下方向持续建设,欢迎更多开发者参与共建:

  • MCP 故障分析:以标准工具接口向 Copilot 和 Agent 暴露诊断能力;
  • 分布式链路分析:把单节点内核现场扩展到跨节点网络和任务链路;
  • AI 场景性能分析:继续深化 GPU/NPU 训练与推理的软硬协同分析。