当前位置:首页 > 报告详情

主会场_陈涛_eBPF滴滴自动驾驶场景下的实践_报告PPT.pdf

上传人: 科*** 编号:713372 2025-06-08 22页 853.71KB

1、eBPF-交流研讨第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安eBPF技术在滴滴自动驾驶场景下的相关实践第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安陈 涛 滴 滴第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m 项目整体概况 如何做到低频问题的定位/定界 问题案例 未来展望1234第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m项目整体概况1第 三 届 e B P F 开 发 者 大 会1.eBPF使

2、用场景以调度场景为列perffto 用户态函数trace,能看到时延不知道底层原因eBPF 内核级trace,善于定位根因 安全、高效、随时可上可下,不需要修改内核代码第 三 届 e B P F 开 发 者 大 会2.覆盖的子系统第 三 届 e B P F 开 发 者 大 会3.车端工具部署抓捕偶现问题常态化部署 不同问题配置不同工具 抓捕对应节点云端配置eBFP日志结合perffto数据日志分析第 三 届 e B P F 开 发 者 大 会如何做到低频问题的定位/定界2第 三 届 e B P F 开 发 者 大 会工具常态化部署遇到的挑战 常态化部署工具,实时追踪应对车端毫秒级低频问题 业务

3、节点对时延非常敏感(ms)热点路径工具自身资源消耗较大遇到的挑战 优化自身代码 增加部署策略、过滤条件(黑名单)等工具优化eBPF编程范式用户态项目框架libbpf-bootstrap 增加静态编译libbpf 增加自定义help func bpf_preempt_cnount等bazelsym 栈解析库 cpu消耗较大替换成bcc库内核程序 1.hook目标函数 2.将数据存在map 3.抓取栈信息(root cause)4.数据输出栈解析的重要性通过栈信息分析用户态程序等锁唤醒 直观呈现问题第一现场,利于问题分析利 在bpf_prog中耗时占大头弊第 三 届 e B P F 开 发 者 大

4、 会1.采栈优化-栈解析封装栈解析API,使用BCC解析库 cpu使用降低70%栈更直观无需后处理blazesym 解析库存在的问题 C+栈信息需要符号后处理 cpu消耗较大,读取符号信息会频繁持有mmap_sem锁第 三 届 e B P F 开 发 者 大 会1.采栈优化-采栈时机1.内核线程上下文不采集用户态栈2.中断上下文不采集用户态栈30%占比!id hash conflictbpf_get_stack_id vs bpf_get_stackUSER_STACK vs KERNEL_STACK第 三 届 e B P F 开 发 者 大 会2.函数hook方式优化kprobetracep

5、ointraw_tracepointfentry1.787M/s1.873M/s3.217M/s3.795M/stest enviroment以实际内核版本实测为准3.引入trigger机制只在监控指标burst的情况下触发工具使用节省CPU资源消耗节省存储资源消耗由频繁系统调用引起的sys打高第 三 届 e B P F 开 发 者 大 会案例分享3第 三 届 e B P F 开 发 者 大 会内核中睡眠锁争抢引起时延(mmap_sem、rtnl_lock)CFS公平调度引起的调度时延高优先级任务抢占低优先级任务(网络包)内存直接回收(同步等待)用户程序逻辑问题(老大难!)实际问题分享1.mm

6、ap_sem锁争抢/proc/pidxx/maps/proc/pidxx/schedstateBPF 工具Libc系统调用进入业务节点 pidxx监控进程static const struct seq_operations proc_pid_maps_op=.start =m_start,.next =m_next,.stop =m_stop,.show =show_map;down_read_killable(&mm-mmap_sem);sys_mprotectdo_mpr

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了第三届eBPF开发者大会上,滴滴自动驾驶场景下eBPF技术的应用实践。关键点如下: 1. eBPF技术在滴滴自动驾驶中应用于调度场景,通过内核级trace定位问题根因,具有安全、高效的特点。 2. 覆盖多个子系统,实现工具常态化部署,应对车端毫秒级低频问题。 3. 面对挑战,优化工具自身代码,降低CPU消耗,如采用BCC库使CPU使用降低70%。 4. 引入trigger机制,节省CPU和存储资源消耗,仅在监控指标burst时触发工具。 5. 优化函数hook方式,提高trace效率,实际测试中最高可达3.795M/s。 案例分享展示了内核中锁争抢、调度时延等问题的定位与分析。未来展望包括进一步优化工具,使用高版本内核特性,实现平台化、服务化、可视化、自动化,以及引入大模型进行trace分析和性能优化。
"eBPF在滴滴怎样实战?" "低频问题如何精准定位?" "eBPF工具优化有哪些奇招?"
客服
商务合作
小程序
服务号
折叠