# proj133-ebpf-tracing-framework **Repository Path**: oscomp/proj133-ebpf-tracing-framework ## Basic Information - **Project Name**: proj133-ebpf-tracing-framework - **Description**: https://github.com/oscomp/proj133-ebpf-tracing-framework - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-17 - **Last Updated**: 2024-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # proj133-ebpf-tracing-framework 基于ebpf的"ZERO"损耗内核路径性能分析框架 ### 项目描述与背景 业务响应延时高/有抖动是线上环境常见的一种问题,直接影响到服务质量,大部分都是由于内核某些流程的高延时而引起,如存储/网络IO、内存分配、进程调度等等。然而这些流程在内核中的处理路径往往很长,有的会跨越多个子系统。如何快速准确找出延时发生在哪里,对于线上问题的排查与日常运维十分关键。随着ebpf技术的发展与普及,在内核跟踪领域出现了大量基于ebpf的跟踪分析工具,但对于特定流程的全链路跟踪仍是一个挑战。ebpf虽然使用起来安全方便,可移植性高,但相比编写内核模块,其额外开销较高,如何降低开销也是目前亟待解决的问题。 本项目要求同学基于ebpf开发一个内核路径跟踪框架,基于该框架实现如存储、网络等内核流程的全链路跟踪,统计延时相关信息,并控制运行开销。 ### 功能描述 #### 基础功能: 1. 实现一个针对内核数据处理流程的通用跟踪框架,基于该框架可方便实现针对某个/某些数据结构(如bio, request, skb , page 等)在内核中的处理流程跟踪,并生成延时分析报告。 2. 实现存储IO请求全链路跟踪。 - 跟踪IO请求在 fs层 + block层 + driver层(支持nvme,scsi,virtio, 如果时间关系无法全部实现,可优先支持virtio)+ 磁盘侧的全流程处理过程(包括期间发生的进程调度及中断干扰)。 - 计算并统计一段时间内,IO路径中各个阶段的平均耗时。 - 记录总IO延时大于阈值的请求,输出该请求详细信息及在IO全流程路径中各个阶段的耗时。 3. 支持进程,线程,容器(cgroup),磁盘维度过滤器。 4. 统计运行开销(内存,cpu),为保证工具可用于常态部署,控制运行时单核及全系统cpu开销<5%,并尽量优化。 - 使用perf或bpf相关性能分析功能,分析该工具运行时的overhead(包括内存和cpu),并尽力优化。输出性能分析报告。 - 提示:除了优化框架自身逻辑外,可分析ebpf所提供相关组件的差异,如数据结构,hook类型等。也可使用bpf CORE框架的相关特性进行优化。 环境要求:为避免内核版本不同造成差异,性能测试及分析统一在Linux 5.15进行 #### 扩展功能: 1. virtio 支持guest到host 全链路跟踪 2. 选择实现网络收发包、内存分配/回收、进程调度等处理流程的跟踪与延时统计。 ### 所属赛道 2022全国大学生操作系统比赛的“OS功能挑战”赛道 ### 参赛要求 - 以小组为单位参赛,最多三人一个小组,参赛对象为全国普通高等学校全日制在校本科生和在校研究生,参赛队员的在校本科生或在校研究生身份均以报名时为准 - 如学生参加了多个项目,参赛学生选择一个自己参加的项目参与评奖 - 请遵循“2022全国大学生操作系统比赛”的章程和技术方案要求 ### 项目导师 尹欣 yinxin.x@bytedance.com 黄杰 huangjie.albert@bytedance.com (网络相关问题指导) ### 难度 中 ### 参考资料 《bpf performance tools》 https://github.com/iovisor/bcc ### License * [GPL-2.0](https://opensource.org/licenses/GPL-2.0) ## 预期目标 完成基础功能和扩展功能的开发,并输出说明文档一篇。 **注意:下面的内容是建议内容,不要求必须全部完成。选择本项目的同学也可与导师联系,提出自己的新想法,如导师认可,可加入预期目标** 参考任务描述部分。