跳到主要内容
版本:3.7.0

eBPF剖析

eBPF是一种虚拟机技术,通过在内核中运行沙盒程序实现数据包过滤和系统事件观察,无需修改内核源代码或加载模块。‌‌能直接捕获传统工具难以触及的细节,例如:内核调度器行为、系统调用耗时、容器网络流量、进程内存分配等,从根本上解决 “应用与内核交互过程不可见” 的问题。

使用场景

  • 云原生 / 容器环境性能诊断:跨容器追踪,在宿主机内核层监控所有容器的系统调用,识别 “某 Pod 因频繁调用malloc导致内存泄漏”“或因tcp_sendmsg网络调用延迟高导致接口超时”
  • 系统调用与内核级瓶颈定位:内核事件追踪,监控page_fault(缺页异常)、mutex_lock(互斥锁竞争),定位 “数据库服务因内核spinlock竞争导致的 CPU 利用率抖动”

开始使用

1、进入系统服务 -> 诊断工具页面,可查看eBPF页签,在此页面可创建eBPF任务及查看历史任务数据 ebpfprofiling1

2、点击创建任务

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

ebpfprofiling2

3、单击查看按钮,可查看eBPF分析详情数据

  • 显示所选进程对应剖析类型的火焰图
  • 火焰图显示方法/函数的调用关系
  • 悬停在节点,显示的内容包含如下:
    • 显示节点的方法/函数
    • 显示剖析类型的值,例如:ON_CPU采样次数:66次(占比为50%)

ebpfprofiling3