eBPF剖析
eBPF是一种虚拟机技术,通过在内核中运行沙盒程序实现数据包过滤和系统事件观察,无需修改内核源代码或加载模块。能直接捕获传统工具难以触及的细节,例如:内核调度器行为、系统调用耗时、容器网络流量、进程内存分配等,从根本上解决 “应用与内核交互过程不可见” 的问题。
使用场景
- 云原生 / 容器环境性能诊断:跨容器追踪,在宿主机内核层监控所有容器的系统调用,识别 “某 Pod 因频繁调用malloc导致内存泄漏”“或因tcp_sendmsg网络调用延迟高导致接口超时”
- 系统调用与内核级瓶颈定位:内核事件追踪,监控page_fault(缺页异常)、mutex_lock(互斥锁竞争),定位 “数据库服务因内核spinlock竞争导致的 CPU 利用率抖动”
开始使用
1、进入系统服务 -> 诊断工具页面,可查看eBPF页签,在此页面可创建eBPF任务及查看历史任务数据

2、点击创建任务
- 选择进程:选项中包含范围内进程,选项显示格式为:【进程组名称@主机IP@PID】
- 选择剖析类型:
- ON_CPU:表示正在被CPU执行,支持指标为采样次数
- OFF_CPU:表示不在CPU上运行,在等待网络I/O、互斥锁、睡眠等,支持的指标包括采样次数、耗时,默认为采样次数
- 选择剖析时间
- 现在:创建完成后,立即执行任务
- 预约:创建完成后,按照预约时间开始执行
- 点击保存,创建进程剖析任务
提示
- 探针长时间执行eBPF剖析可能会额外增加较多的cpu损耗,挤占应用程序cpu资源。
- 同一个主机同时只能运行一个剖析任务;
- 同一个进程,同一时间只能执行一个剖析任务,否则任务会执行失败。
- 剖析时长:进程剖析的时长,范围1~20分钟

3、单击查看按钮,可查看eBPF分析详情数据
- 显示所选进程对应剖析类型的火焰图
- 火焰图显示方法/函数的调用关系
- 悬停在节点,显示的内容包含如下:
- 显示节点的方法/函数
- 显示剖析类型的值,例如:ON_CPU采样次数:66次(占比为50%)
