
11 月 1 日,第二十届中国 Linux 内核开发者大会(CLK)在深圳举办。CLK 作为国内 Linux 内核领域极具影响力的峰会,由清华大学、Intel、华为、阿里云、富士通南大、迪捷软件、腾讯云、OPPO、字节跳动、vivo、蚂蚁集团、龙芯中科等企业发起,以“自由,协作,创新”为理念,以开源技术的推广和普及为使命,旨在促进Linux内核开发爱好者相互交流、共同进步。

本届大会上,deepin(深度)社区内核技术研发工程师徐浪带来 “基于 eBPF 的多线程系统信息采集优化” 主题演讲,分享的创新方案引发现场热议。

徐浪,deepin(深度)社区资深内核研发工程师
在现代Linux操作系统当中,内核提供的众多虚拟文件系统的接口节点,供用户态应用程序采集系统内核信息,这些节点能提供丰富的系统信息,常见的有procfs、sysfs、debugfs等虚拟文件系统。然而,正因为这些节点是基于文件系统的,访问这些节点需要经过完整的文件系统调用路径(open/read/close),对于procfs,在一些应用密集型的终端场景中,采集系统进程信息将会产生海量系统调用,过程将变得尤为低效。
针对这一痛点,徐浪提出的 eBPF 优化方案,核心围绕四步破解效率难题:
- 一是构建 eBPF 采集程序加载至内核。依托 eBPF 可在内核态运行自定义程序的特性,将进程 PID、内存占用等采集逻辑封装其中,直接在内核层完成数据抓取,避免用户态与内核态频繁切换,降低基础开销。
- 二是搭建 eBPF 共享内存存数据。采集到的信息直接存入专属共享内存,实现 “一次写入、多次读取”,跳过文件 I/O 的繁琐流程,缩短数据流转路径。
- 三是共享内存映射至多用户态程序。多个监控、调试工具可直接将共享内存映射到自身地址空间,无需额外系统调用,实现 “一次采集、多端共享”。
- 四是优化eBPF链接重定向逻辑,提升eBPF加载速度及实例的复用率,降低内存占用。
实测数据更印证方案价值:在 2W+ 进程的模拟场景中,传统方案遍历所有进程需百万级系统调用,而该方案仅需千级;采集时间降低超 2 个数量级,高并发下系统仍能流畅响应
作为国内知名 Linux 发行版社区,deepin 始终聚焦开源技术落地。此次分享的 eBPF 方案,既是团队解决实际痛点的创新成果,也为全球开源社区提供了可复用经验,完美契合 CLK“自由,协作,创新” 的理念。未来,随着 eBPF 等技术成熟,Linux 系统将在更多场景释放潜力,为开源生态发展注入新动力。
-
DKapture 项目地址