《2.Coolbpf在各内核版本的应用实践.pptx》由会员分享,可在线阅读,更多相关《2.Coolbpf在各内核版本的应用实践.pptx(29页珍藏版)》请在三个皮匠报告上搜索。
1、首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf 在各内核版本的应用实践毛文安 龙蜥社区 eBPF技术探索 SIG Maintainer龙蜥社区 系统运维 SIG Owner酷玩BPF首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf 原理01酷玩BPF背景背景首届中国首届中国eBPFeBPF研讨会研讨会01我们有大量的3.10内核难!还得安装依赖库烦!每次启动都得编译,CPU/内存消耗伤!需要包含kernel-devel 头文件累!酷玩BPFBPF开发常用方案对比原生libbpf,无CO-RE(内核samples/bpf示例)优势:资源占用量低缺点:1、需要搭建代码工程、开
2、发效率低;2、不同内核版本兼容性差;BCC(bpf compile collection)优势:开发效率高,可移植性好,支持动态修改内核部分代码缺点:1、部署依赖的Clang/LLVM;2、每次运行都要执行Clang/LLVM编译,争抢内存CPU内存等资源;3、依赖目标环境头文件;BPF CO-RE(自己编写的bpf_core_read代码)优势:不依赖在环境中部署Clang/LLVM,资源占用少缺点:1、仍需要搭建编译编译工程;2、部分代码相对固定,无法动态配置;3、用户态开发支持信息较少,缺乏高级语言对接;酷玩BPF上述方案,不能很好适配生产环境中,多内核并存、快速批量部署等需求Coolb
3、pfCoolbpf 设计与实现设计与实现首届中国首届中国eBPFeBPF研讨会研讨会02酷玩BPF当前特点:1.一次编译,到处使用;一键安装,快速开发2.低版本内核支持3.BTF下载和高级语言封装既定计划既定计划首届中国首届中国eBPFeBPF研讨会研讨会03酷玩BPF未来主要功能点:1.基础框架,效率提升2.优秀工具,诊断和跟踪3.特性开发,内核功能eBPF化。重点关注:1.Verifier智能定位2.轻量编译器3.eBPF LSM4.Perf增强远程编译原理远程编译原理首届中国首届中国eBPFeBPF研讨会研讨会03酷玩BPFCoolbpf一站式eBPF开发编译平台主要功能点:1、标准化b
4、pf编译服务,具备弹性能力2、服务已支持2000+公开发行版内核3、输出的so支持CORE,结合BTF可以做到处处运行;4、客户端Coolbpf中间层提供便捷化的libbpf支持api,加速内核数据流处理酷玩BPF低版本内核实现低版本内核实现首届中国首届中国eBPFeBPF研讨会研讨会04酷玩BPF背景和框架1.目前基于eBPF编写的程序只能在高版本内核(支持eBPF的内核)上运行,无法在不支持eBPF功能的内核上运行;2.线上有很多Alios或者centos低版本内核需要维护3.存量BPF工具或项目代码,希望不做修改能跨内核运行为此我们提出了一种在低版本内核运行eBPF程序的方法,使得二进制
5、程序无需任何修改即可在不支持eBPF功能的内核版本上运行酷玩BPFeBPF驱动1.map、helper、verifier 和 jit 和原生的 eBPF 保持一致2.prog:eBPF 驱动中 prog 的 attach 和原生的 eBPF 略有差异lkprobe:perf 框架-kprobe 框架ltracepoint:perf 框架-tracepoint 框架lperf event:均基于 perf 框架酷玩BPF全量内核版本运行全量内核版本运行首届中国首届中国eBPFeBPF研讨会研讨会05酷玩BPF总结低版本内核:从无到有移植eBPF功能中版本内核:4.x 使能vmlinux-btf和
6、libbpf CO-RE,高级eBPF特性移植高版本内核:5.x 可配置的btf路径,自动化CO-RE代码生成框架,容器化编译环境,本地和远程编译注:典型内核版本:3.10/4.19/5.10酷玩BPF首届中国首届中国eBPFeBPF研讨会研讨会Coolbpf的应用02酷玩BPF基于基于eBPFeBPF的网络的网络抖动三剑客抖动三剑客首届中国首届中国eBPFeBPF研讨会研讨会01酷玩BPF认识网络抖动主机内部可能产生延迟的几个阶段:中断/软中断处理,唤醒进程/调度,qdisc排队等酷玩BPF业务抖动网络抖动的界定current抖动解决方案rtrace当下还在发生的可复现抖动问题历史抖动解决方
7、案netinfo过去发生的当前不再复现的业务抖动问题ping毛刺解决方案pingtraceping包出现seq有ms级的延迟酷玩BPF网络三剑客1.pingtrace:基于自定义ping报文的常规时延探测,覆盖icmp/tcp/udp的ping时延抖动问题;2.rtrace:基于真实业务报文时延挖掘,覆盖从用户应用到nc节点出入口的时延问题;info:基于容器、流、逻辑接口的业务各项指标监控,追踪业务抖动的根因,可定制诊断项和绘制历史曲线,进行集群告警和vm单机告警;OSpingtrace icmp pingtcp ping udp pingrtrace 真实业务报文netinfo 历史抖动问
8、题监控virtio-net中断和报文对应时序硬中断/软中断时延协议栈处理时延,调度时延,Qdisc时延用户态的延时探测构造探测报文virtio-net前后端统计计数iohang,中断突发,调度切换,内存oom,宕机连接参数,零窗口探测缓存,重传,丢包集群、单机业务指标监控、告警酷玩BPFpingtracepingtrace首届中国首届中国eBPFeBPF研讨会研讨会02通过构造通过构造pingtracepingtrace探测报文,去挖掘现时抖动探测报文,去挖掘现时抖动酷玩BPFPingtrace实现酷玩BPFrtracertrace首届中国首届中国eBPFeBPF研讨会研讨会03通过类通过类“
9、tpcdumptpcdump”的真实报文追踪,去挖掘现时抖动的真实报文追踪,去挖掘现时抖动酷玩BPFNetinfoNetinfo首届中国首届中国eBPFeBPF研讨会研讨会04酷玩BPFnetinfo监控大图各项系统指标采集IO/CPU/NET/MEM分析业务抖动来源确定业务异常原因指标展示和告警提示主动运维和联动报警通过常态监控和大数据分析,去挖掘历史抖动通过常态监控和大数据分析,去挖掘历史抖动酷玩BPFCoolbpf应用实践1.eBPF1.eBPF 采集数据采集数据低版本支持,centos3.10等提供接供第三方SDK使用模块化、插件化2.Agent2.Agent完成采集数据的清理3.Ex
10、porter3.Exporter定义metric,完成数据的云端存储及展示4.4.部署部署容器化、单机二进制酷玩BPFCoolbpf应用实践1.无代码侵入2.进程级观测3.应用协议层的多维度统计:协议解析、请求时延、响应状态、流量统计酷玩BPFCoolbpf应用实践阶段1OS通过软中断将数据包上送到应用的收包队列并通知进程阶段2应用得到通知后去收包队列取数据如何观测阶段2延迟的网络“假抖动”?酷玩BPFCoolbpf应用实践某业务应用基于某业务应用基于dubbodubbo框架容器收到框架容器收到tcptcp包后延迟了将近包后延迟了将近1 1s s业务层才收到。业务层才收到。方法:部署eBPF agent,发现阶段2“收包延迟时间”将近1秒。原因:每次发生延迟时间都在某时刻的42秒处,怀疑跟业务某定时任务相关造成应用自身延时,最终排查到业务有某个任务会定时收集jvm的参数,对该业务应用有stop动作。解决方法:停掉该任务后,消除了抖动问题酷玩BPF首届中国首届中国eBPFeBPF研讨会研讨会01龙蜥社区eBPF技术探索SIGhttps:/