《4.基于eBPF的Linux内核探索之旅—开源项目LMP.pptx》由会员分享,可在线阅读,更多相关《4.基于eBPF的Linux内核探索之旅—开源项目LMP.pptx(49页珍藏版)》请在三个皮匠报告上搜索。
1、首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的产学研融合的产学研融合项项目目LMPLMP赵晨雨赵晨雨 thoughtworks&Linux thoughtworks&Linux内核之旅内核之旅maintainermaintainer首届中国首届中国eBPFeBPF研讨会研讨会目录录01LMP LMP 产学研产学研理念理念02LMP LMP 想法想法落地落地03LMP LMP 开发运行新体验开发运行新体验04LMP LMP 未来未来规划规划首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 产学研理念产学研理念01首届中国首届中国eBPFeBPF研讨会研讨会学生阶
2、段的学生阶段的demodemo 2019年,陈莉君老师发现eBPF并带领我们投入eBPF研究 只是一个demo:可视化eBPF提取的数据 对eBPF的第一印象:是Linux显微镜首届中国首届中国eBPFeBPF研讨会研讨会Linux Linux 显微镜显微镜首届中国首届中国eBPFeBPF研讨会研讨会Linux MicroscopeLinux Microscope首届中国首届中国eBPFeBPF研讨会研讨会LMPLMP首届中国首届中国eBPFeBPF研讨会研讨会学生阶段迭代学生阶段迭代 工业界师兄加入指导 服务于研究生团队 成为研究生团队研究eBPF的集散地 eBPF热度渐起,参加各类大赛 此
3、时聚焦eBPF的web管理系统“产”“学”“研”初现首届中国首届中国eBPFeBPF研讨会研讨会 学习Linux内核的手段之一,可以迅速产出 激活学习兴趣 灵活,可以充分发挥想象力 关注点转移到eBPF想法上 还缺乏统一的思路学生阶段迭代学生阶段迭代首届中国首届中国eBPFeBPF研讨会研讨会开源之夏活动开源之夏活动 开源之夏是开源软件供应链点亮计划系列暑期活动,由中国科学院软件研究所与openEuler社区共同举办,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。首届中国首届中国eBPFeBPF研讨会研讨会2021 LMP+2021 LMP+开源之夏开源之夏 更加
4、开放,加入core member夏家华 重点关注eBPF想法的实现:eBPF+机器学习 探索安卓场景下eBPF的落地应用“产”“学”“研”进一步:项目落地+培养人才纳入项目规划首届中国首届中国eBPFeBPF研讨会研讨会CCF GitLink CCF GitLink 开源编程夏令营开源编程夏令营 CCF GitLink 开源编程夏令营(GitLink Code Camp,简称 GLCC),是在 CCF 中国计算机学会指导下,由 GitLink 社区联合 CCF 开源发展委员会(CCF ODC)共同举办的面向全国高校学生的暑期开源项目实习计划。首届中国首届中国eBPFeBPF研讨会研讨会2022
5、 LMP+2022 LMP+开源之夏开源之夏+CCF GitLink+CCF GitLink题目题目LMP web后端能力研发TCP&UDP pingtrace的设计与实现LMP web前端能力研发LMP项目前端网页优化sidecar的性能监测和分析基于 eBPF 的 XDP 研究与应用基于 eBPF 的云原生场景下 Pod 性能监测基于eBPF的Linux系统性能监测工具-网络子系统基于eBPF的Linux系统性能监测工具-内存子系统基于eBPF的Linux系统性能监测工具-CPU子系统基于eBPF的DNS Cache实现 超级市场目前共有项目/工具22个 每周五例会指导 每周六直播活动 提
6、供eBPF入门引导首届中国首届中国eBPFeBPF研讨会研讨会产学研生态产学研生态首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 想法落地想法落地02首届中国首届中国eBPFeBPF研讨会研讨会LMPLMP子项目子项目eBPF_SupermarketeBPF_VisualizationeBPF_HubeBPF_Documentation首届中国首届中国eBPFeBPF研讨会研讨会eBPFeBPF入门引导入门引导可观测性性能指标传统方式提取找到核心数据结构/方法梳理提取原理/方法初学者一般会遇到的问题:eBPF需要了解内核,入门门槛高,知道eBPF很火,但是很难说清究竟好在哪里 在什
7、么时候需要使用eBPFeBPF方式增强https:/ 首届中国首届中国eBPFeBPF研讨会研讨会eBPF_SupermarketeBPF_Supermarket 超级市场目前共有项目/工具22个 中科院软件所开源之夏/gitlink CCF夏令营 每周五例会 每周六直播活动 提供eBPF快速入门引导首届中国首届中国eBPFeBPF研讨会研讨会进程画像进程画像首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的的LinuxLinux系统性能监测工具系统性能监测工具-CPU-CPU子系统子系统1.proc文件系统-内核底层实现的性能监测,是大部分传统工具的基础/proc/sta
8、t 记录系统各状态占用CPU时间、中断次数等/proc/loadavg 记录内核统计的系统负载 2.mpstat分处理器定时展示各执行状态占用CPU时间的比例。执行状态包括用户态、内核态、irq、softirq、syscall等3.sar覆盖各个内核子系统的指标监测工具,可提供详细的性能报告4.uptime快速查看CPU在1min,5min,15min内的按指数衰减的负载信息,能较为准确地反映CPU在一个时间段内的负载情况5.perfperf是一个基于内核的子系统,它提供一个性能分析框架,比如硬件(PMU)功能和软件(软件计数器、tracepoint)功能,可以支持函数级别的采样和分析。缺点:
9、采集的数据是内核的全量数据,不能进行有效的过滤,灵活度不足首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的的LinuxLinux系统性能监测工具系统性能监测工具-CPU-CPU子系统子系统传统工具的优点:1.操作简单2.占用资源少,性能影响较小3.不受linux内核版本影响传统工具的缺点:1.难以扩展出新的指标2.一般依赖/proc,提取频率难以保障3.不具备动态编程特性引入引入eBPFeBPF工具工具优势:1.可编程性,可以根据需要相应编写对应的程序2.可以动态筛选信息来导出,灵活度高3.相比于单纯的采样,eBPF能准确获取事件发生的时间和持续的时长,准确度高4.从内核
10、运行原理层次分析问题,有助于深入挖掘问题的本质首届中国首届中国eBPFeBPF研讨会研讨会1.BCC_sar是模仿sar工具,使用BPF实现的CPU子系统的综合性系统性能监测程序。其指标包括每秒创建进程数、上下文切换数、运行队列长度;以及各CPU状态(usr,sys,irq,softirq,)所占的CPU时间比例等。性能:在正常状态下每秒钟产生20006000个eBPF调用,按每eBPF调用消耗3us来计算,总BPF时间占用不超过2%.进程画像进程画像首届中国首届中国eBPFeBPF研讨会研讨会2.单进程调度画像针对某个特定进程,记录其运行状态(runTime)、睡眠状态(sleepTime)
11、、等待状态(waitTime)的时间占比,并分析其调度特征。等待时间与运行时间的比值越小,说明进程平均等待时间短,响应性好,同时当前负载较低。一般进程有这样的状态变化:运行一段时间、睡眠、再运行一段时间,如此往复。因此采用runtime,runslice,runCount来描述进程的这种间断响应特征,从而可以评估进程的响应性。睡眠时间 运行时间 运行时间片 单次运行时间片数进程画像进程画像首届中国首届中国eBPFeBPF研讨会研讨会3.单进程生命周期画像针对某个进程,绘制其状态变化图,在图中标注出睡眠以及唤醒的相关信息,即进程的生命周期画像。只记录进程的运行和停止的生命周期画像加入睡眠及睡眠原
12、因、唤醒者等后的生命周期画像进程画像进程画像首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的的DNS CacheDNS Cache实现实现首届中国首届中国eBPFeBPF研讨会研讨会基于eBPF的DNS Cache实现适合容器场景及 IPv4 网络首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的云原生网络监控工具的云原生网络监控工具首届中国首届中国eBPFeBPF研讨会研讨会Service首届中国首届中国eBPFeBPF研讨会研讨会能力资源识别数据/资源捕获HealthContainerPerformanceSecurityPodProtocolSe
13、rvice MapVMKVMPIDCgroupNamespaceFdAddressSyscallLibrarySyscallCPUSocketeBPF MapsProtocolParserseBPFcollectorKerneldataMonitorSchedulerdaemonMemTcpVFSIPDiskXDP基于基于eBPFeBPF的云原生网络监控工具的云原生网络监控工具首届中国首届中国eBPFeBPF研讨会研讨会基于基于eBPFeBPF的云原生网络监控工具的云原生网络监控工具 sidecar pod 三项目融合首届中国首届中国eBPFeBPF研讨会研讨会eBPFeBPF初学者环境初学者
14、环境首届中国首届中国eBPFeBPF研讨会研讨会https:/ log 首届中国首届中国eBPFeBPF研讨会研讨会eBPF_DocumentationeBPF_Documentation首届中国首届中国eBPFeBPF研讨会研讨会eBPF_DocumentationeBPF_Documentation微信公众号Linux 内核之旅官网BPF资料梳理内核学习资料梳理Linux内核视频:学堂在线陈老师教学Linux内核视频BPF 入门demoLMP 项目文档首届中国首届中国eBPFeBPF研讨会研讨会eBPF_DocumentationeBPF_Documentation首届中国首届中国eBPF
15、eBPF研讨会研讨会LMP LMP 开发运行新体验开发运行新体验03首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 遇到的问题遇到的问题 子项目越来越多,每个项目使用的环境要求不一,且可视化方案多种多样,多语言混合 如果想运行多个项目,可能需要配置多个环境,效率低下 开发子项目没有统一的规范,不利于管理首届中国首届中国eBPFeBPF研讨会研讨会开源项目的融合开源项目的融合借助 eunomia-bpf 提供的符合 OCI 标准的 WASM 和 eBPF 程序标准,打造标准化、高可扩展性的 eBPF 程序管理平台,利用 ORAS 简化 eBPF 分发、加载、运行能力,为 eBPF 开
16、发者和使用者提供更加简单、高效的体验。首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 运行运行新体验新体验 one-line首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 开发新方式开发新方式 准备环境首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 开发新方式开发新方式 构建内核态代码首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 开发新方式开发新方式 构建内核态代码首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 运行新体验运行新体验 运行内核态代码首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 运行新体验运行新体验 运行用户态代码首届中国首届中国eBPFeBPF研讨会研讨会LMP LMP 未来未来规划规划04首届中国首届中国eBPFeBPF研讨会研讨会1.探索和孵化更多的 eBPF 想法、相关工具、项目;2.继续深入产学研融合3.进一步完善 ORAS 和 OCI 镜像相关的支持;4.重构并迁移现有的 eBPF 工具,提供完整的、开箱即用的分析工具组件;5.在eBPF开发积累的过程中,开发eBPF相关通用组件;首届中国首届中国eBPFeBPF研讨会研讨会Thanks!2024-5-