《2.eBPF技术在CT领域的分布式性能追踪的实践.pptx》由会员分享,可在线阅读,更多相关《2.eBPF技术在CT领域的分布式性能追踪的实践.pptx(10页珍藏版)》请在三个皮匠报告上搜索。
1、首届中国首届中国eBPFeBPF研讨会研讨会eBPF技术在分布式性能追技术在分布式性能追踪的探索和实践踪的探索和实践 杨金城 华为公司-ICT产品首届中国首届中国eBPFeBPF研讨会研讨会123业务流途经多个组件,路径很长,排查出哪个组件是瓶颈比较耗时耗力组件间交互关系复杂多样,有串行、有并行,给分布式性能调优带来了“噪音”干扰组件间交互方式多种多样,有跨单板的消息通信、有跨进程的共享队列通信、有直接的API交互分布式系统定位性能瓶颈的痛点组件化CT(通信系统)IT(信息系统)服务化单体展现层服务层存储层or单体架构分层架构嵌入式系统组件化演进,分布式性能瓶颈难以界定(某设备的升级流程)首届
2、中国首届中国eBPFeBPF研讨会研讨会eBPF技术原理kprobes:实现内核中动态跟踪。可以跟踪到 Linux 内核中的函数入口或返回点uprobes:用户级别的动态跟踪。与 kprobes 类似,是跟踪的函数为用户程序中的函数tracepoints:内核中静态跟踪。内核开发人员维护的跟踪点,能够提供稳定的ABI接口perf_events:定时采样和 PMCBPF插桩代码以内核探针的方式BCC是eBPF的一种前端,目的是简化BPF程序的开发和使用:动态跟踪器跟踪机制开销(per hit)提升倍数(vs strace)gdbptrace-based265usstraceptrace-base
3、d25usltraceptrace-based22usuprobe(eBPF)kernel-based3.4us7xkprobe(eBPF)kernel-based0.25us100 xutracekernel-based0.16us155xeBPF(kprobe/uprobe)比传统的基于ptrace插桩技术性能提升7100倍,尽可能保证业务性能不失真待插桩的内核函数eBPF原理介绍首届中国首届中国eBPFeBPF研讨会研讨会01核、进程、线程数据组件、模块、TASK数据传统动态性能采集侵入式打点采集组件级打点模块级打点执行路径打点eBPF精细化采集,业务不中断动态插桩插桩编译套件语言前端框
4、架clang&llvmlibbpfinst_p1(arg)do tracing 插桩代码调用链库pmu库其它公共库自定义工具rebootcompile基于eBPF的动态追踪:自动安装插桩工具,一键式操作(分钟级)对组件边界出入口进行动态插桩,自动生成组件调用链(自动化、图形化)非侵入式动态插桩,无需重编重启,可随时增加追踪点(业务无损、易扩展)传统的侵入式追踪:l 工具碎片化,手工操作,效率低(小时级)l 技能门槛高,命令复杂,精细度不够(海量log、依赖专家)l 侵入式操作,数据采集需要重新编译、部署、启动(中断业务)ASISTOBEeBPF动态追踪技术与分布式调用链首届中国首届中国eBPF
5、eBPF研讨会研讨会01compAcompBcompCcompD业务流:compA-compC-compD-compB-compC-compA日志打点:compA-22345packet send.time:75444562compC-22346packet recv.time:75444612compD-22347message process.time:75444762compB-22349message parse.time:75444800compC-22346message distribute.time:75444900compA-22345packet response.time
6、:75444962compAcompBcompCcompD组件逻辑视图划分组件边界的配置文件eBPF对边界动态插桩符合OpenTracing的数据基于打点的多组件时延分析基于eBPF技术的动态性能追踪u 过去是手工打点-重出版本-重跑用例,识别出组件的性能瓶颈。每次性能攻关都要重复一遍,比较耗时费力。易用直观:一键式动态生成分布式调用链,图像化展示组件的交互关系和通信方式;无损易扩展:不需要重新编译、重新启动,可以随时扩展跟踪点;自定义采集:支持用户自定义tag标签,采集精细化的数据;eBPF在多组件时延分析上的应用首届中国首届中国eBPFeBPF研讨会