1、eBPF技术在小米移动端的技术实践第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安罗强威小 米2025.04.19第三届 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中 国 西 安第 三 届 e B P F 开 发 者 大 会发展现状Android P开始应用eBPF技术,到Android V已经过了7年,在众多领域有所发展:领域能力概述稳定性实时捕获Android内核内存
2、事件(如OOM杀进程、内存回收等),为AMS和LMKD提供决策依据,优化内存管理以提升系统流畅性性能跟踪系统CPU 使用、GPU内存、GPU负载等性能指标,以优化系统性能并延长电池寿命;支持使用uProbe对用户态函数执行情况进行跟踪。文件系统Fuse Bypass,大幅提高文件访问和传输效率,同时能够兼顾权限管控网络流量跟踪、分流与管理Android上开发/运行BPF程序的通用过程(示例):第 三 届 e B P F 开 发 者 大 会发展现状业务痛点第三届 eBPF开发者大会w w w.e b p f t r a v e l.c o m中 国 西 安业务痛点第 三 届 e B P F 开
3、发 者 大 会业务需求扩展遇到性能制约以稳定性问题为例,我们之前需要遍历ProcFs获取系统信息,分析系统异常,但是由于其性能消耗过大,难以在用户侧商用。此外有很多其他领域的业务,亟需一种手段高效获取系统指标,来实现自身的能力。Android eBPF生态兼容割裂1.项目成本高。Android上eBPF程序开发需要学习Google制定的规范,且资料较少,导致学习成本很高,开发成本大。2.生态兼容割裂。由于Android eBPF ELF文件布局差异,导致社区成熟程序无法直接在Android上加载运行,且CO-RE能力缺失,导致跨机型、版本的适配成本高中台架构第三届 eBPF开发者大会w w w
4、.e b p f t r a v e l.c o m中 国 西 安中台架构第 三 届 e B P F 开 发 者 大 会结合小米自身需求和实践、简单易用的平台级解决方案-Hyper BPF Framework1.作为数据中台,向上提供相关底层数据的跟踪与分析2.提供开发者SDK,开放具体业务所需的内核入口和数据3.支撑业务扩展,提供便捷、规范的小米eBPF程序和应用的开发流程中台架构为支撑和实现上述目标,BPF Framework软件的整体架构如下,它包含多个重要组件、涉及从用户态应用贯穿到Kernel运行时的多个层面:原始数据层面-内核资源与数据入口逻辑控制层面-BPF程序运行时核心管理层面
5、-Android BPF执行环境事件分发层面-Hyper BPF平台业务应用层面-Hyper BPF应用与内核扩展第 三 届 e B P F 开 发 者 大 会Hyper eBPF Framework整体架构中台架构第 三 届 e B P F 开 发 者 大 会架构落地带来的收益1.故障检测与告警。比如我们借助eBPF能力实现高效、快速的且能够线上部署的异常与故障监控。2.系统可观测性。基于上层和内核现有的事件挂载点,eBPF Framework可以协助实现一套完整的系统观测平台,用以洞察整机的运行状态、系统开销、性能突刺、网络流控等。3.数据的便捷跟踪。基于BPF技术我们能够增强数据的跟踪方
6、式,从常见的通过procfs、sysfs、netlink等交互手段切换到与内核的直接“对话”,时效与性能均得以提升4.内核模块的扩展。既然BPF如此流行,自然地越来越多的内核模块/实现在与其对齐甚至“共建”,用以向上层应用提供二次开发、kernel bypass的能力,比如“lru_gen”,fuse等中台架构第 三 届 e B P F 开 发 者 大 会全链路打通eBPF运行体系赋能业务能力提升1.功能实现-根据系统资源指标调整App或系统模块的功能2.异常检测&数据采集-