《刘冰--基于eBPF的函数调用栈观测工具.pdf》由会员分享,可在线阅读,更多相关《刘冰--基于eBPF的函数调用栈观测工具.pdf(26页珍藏版)》请在三个皮匠报告上搜索。
1、基于eBPF的函数调用栈观测工具第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安西安邮电大学-刘冰第 二 届 e B P F 开 发 者 大 会个人简介刘冰,就读于西安邮电大学计算机学院,研究生二年级,曾获得2019全国大学生数学建模竞赛省奖,2023年全国大学计算机系统能力大赛国奖,2023年CCF开源夏令营优秀项目奖第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安0、背景1、高效的数据组织方式2、PSI触发及及时采集3、多指标关联4、持续性观测和长期存储!相关工具繁杂,问题不一!pr
2、ofile用于on_cpu调用栈采样,只能设置采样频率,功能单一!offcputime用于采集off_cpu调用栈,无法实时显示数据!memleak用于采集内存泄露调用栈,无法正常显示用户态调用栈,无法有效执行子进程!.!不便于分析!上述等大多数工具都会将采集的数据按调用栈进行输出,篇幅大,不便于直接查阅和分析第 二 届 e B P F 开 发 者 大 会使用不便0、!数据量大!IO损耗高例如perf工具或者基于eBPF的profile工具,其会输出每个调用栈样本,会造成频繁输出,并产生大量数据。第 二 届 e B P F 开 发 者 大 会性能消耗大0、第 二 届 e B P F 开 发 者
3、 大 会本项目设计了一个统一的框架,主要针对程序性能瓶颈问题,来进行基于eBPF的调用栈采集第 二 届 e B P F 开 发 者 大 会第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安0、背景1、友好的数据组织方式2、PSI触发及及时采集3、多指标关联4、持续性观测和长期存储默认49hz采集样本 输出Top10调用栈第一个表为pid,用户栈id,内核栈id及其关联指标按指标值进行排序,便于找出高消耗进程和其瓶颈调用栈的id第二个表为栈id和栈,可根据栈id找到调用栈,查看函数调用关系第三个表为pid、命名空间pid、命令名、命名空间tgi
4、d和cgroup id,由此可看出pid所属的组,容器等信息,有利于进一步回溯第 二 届 e B P F 开 发 者 大 会本地拆分展示1、按cgroup过滤 按pid过滤 按tid过滤 创建指定命令进程并采集第 二 届 e B P F 开 发 者 大 会精准数据采集1、兼容grafana pyroscope本项目的发送器将采集数据发送到pyroscope服务端有指标时序图、调用栈火焰图和函数占比列表三种可视化方案支持对比视图和差分视图第 二 届 e B P F 开 发 者 大 会服务端可视化1、第 二 届 e B P F 开 发 者 大 会性能测试1、第二届 eBPF开发者大会w w w.e
5、 b p f t r a v e l.c o m中 国 西 安0、背景1、高效的数据组织方式2、PSI触发及及时采集3、多指标关联4、持续性观测和长期存储 PSI报警后监控本系统可基于psi实现动态的负载监控,着眼与高阻塞环境,节省不必要的监控开销。第 二 届 e B P F 开 发 者 大 会PSI触发2、设定psi压力门限psi发出警报?进行一段时间的调用栈监控是否 核心思想:eBPF attach需要进行系统调用,在高阻塞环境可能会使数据采集不及时,这里使用eBPF 全局变量进行采集控制 优点:减小性能损耗及时地数据采集第 二 届 e B P F 开 发 者 大 会高阻塞环境下及时触发2
6、、eBPF attach=true?采集数据是否默认设为false使能则设为true暂停则设为false_active背景1、第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安PSI触发及及时采集2、多指标关联3、持续性观测及长期存储4、关联多指标的监测功能按进程调用栈,统计IO操作的次数和数据量按进程调用栈,统计缓存失配次数、缓存命中次数以及缓存命中率按进程调用栈,统计内存泄露大小、内存分配未释放次数。多视图观察为调用栈数据提供了更多的视图,便于多维度剖析调用栈性能瓶颈第 二 届 e B P F 开 发 者 大 会增加数据复用性3、自定义指
7、标列表自定义指标解析方法利于框架可扩展性第 二 届 e B P F 开 发 者 大 会便于扩展的指标3、背景1、第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安PSI触发及及时采集2、多指标关联3、持续性观测及长期存储4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -cpu占用4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -阻塞4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -内存泄露4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -内存泄露4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -输入输出4、第 二 届 e B P F 开 发 者 大 会eBPF应用案例 -自定义跟踪点计数:vfs_open4、谢谢大家!第二届 eBPF开发者大会w w w.e b p f t r a v e l.c o m