毛文安
阿里云操作系统高级技术专家
龙蜥社区系统运维 SIG 和 eBPF 技术探索 SIG 的负责人,具有多年 Linux 操作系统开发及性能调优经验,深耕 Linux 内核社区,专注 eBPF 技术的研究和探索,主要负责领域为阿里云操作系统稳定性和 Linux 网络、I/O等新特性的研究,作为架构师主导完成阿里云操作系统智能运维平台 SysOM 及eBPF的开发平台Coolbpf的设计与实现,为解决疑难的应用和系统抖动、性能劣化等问题打开一片天地。
演讲主题
eBPF工具的开发和资源优化在多内核版本的实践
Linux内核版本经历了3.x向4.x到5.x演进,eBPF技术的支持也是从4.x开始完善起来,目前高版本内核已经支持纯CORE方式,而云上服务器有大量的3.10内核版本是不支持eBPF的,为了让我们现有的eBPF工具在这些存量机器得以支持,享受到eBPF带来的红利,我们移植了eBPF技术到低版本内核,保证一个工具可运行于低、中、高的内核版本。 另外,当前的BPF主要开发如下: 1、纯libbpf应用开发:这种开发方式不仅效率低,同时存在可移植问题,跨内核运行; 2、借助BCC:开发效率高、可移植性好,并且支持动态修改内核部分代码,非常灵活,但存在部署依赖Clang/LLVM,体量非常庞大;每次运行都要执行Clang/LLVM编译,严重消耗CPU、内存等资源,容易与其它服务争抢; LCC(Libbpf Compilation Collection)以 BPF CORE 为基础实现,保留了资源占用低、可移植性强等优点,还融合了BCC动态编译的特性,适合在生产环境批量部署应用。 LCC方案优点: 1、提供通用化内核代码模板,完全剥离出内核编译工程; 2、复用编译成果,本地侧无编译过程,不存在包依赖和CPU、内存等资源消耗问题; 3、针对集群多内核版本场景,可自适应不同版本差异,更适合批量部署; 我们通过优化eBPF工具的开发方法,节省了资源消耗,同时原来基于BCC的python工具,只需要在LCC的帮助下,就能在全量内核版本安全运行,给广大eBPF的爱好者提供一种新的探索和实践。