最后更新: 2026-02-21, 作者: 官方小编
隐形的瓶颈
虽然 eBPF 最初是为内核中的数据包过滤而设计,但研究人员正在探索它的更多潜力,其中一个重要方向,就是如何绕过操作系统解决数据库性能瓶颈。
卡内基梅隆大学教授 Andrew Pavlo 在 P99 CONF 上表示:“过去50年,操作系统一直在让数据库工程师变得非常痛苦。操作系统做出了一些设计选择,并将自己的意志强加给所有用户态应用,包括数据库系统。” Pavlo 在演讲中介绍了 BPF-DB, 一个基于 eBPF 的内存键值存储,直接嵌入操作系统内核,从而绕过用户态的诸多限制和开销。
长期矛盾
数据库与操作系统存在长期矛盾。操作系统管理硬件资源,必须在多个竞争的应用之间做出决策,因此并非所有应用都能随时获得所需的内存和计算资源。这对数据库设计者而言一直是痛点,他们认为数据库才是最重要的应用。
PostgreSQL 创始人 Michael Stonebraker :“在许多现有系统中,操作系统提供的服务要么太慢,要么根本不合适。”

Linux 内核维护者 Linus Torvalds 曾抱怨数据库开发者“毫无品味”,因为他们催生了异步 I/O 接口,而这个接口似乎主要被数据库用于非阻塞写操作。

追求更高性能的数据库研究方向长期以来都是:尽量减少与内核的交互,尽可能降低系统调用次数(内存管理方式),并采用其他绕过内核的技术。典型方法是 kernel-bypass(内核旁路)技术,通常借助 Intel DPDK、SPDK 等库实现。Pavlo 认为这种方式存在明显局限:需要大量重复开发工作,调试难度极高。Stanford, MIT, Google, VMware 《DBOS: A DBMS-oriented Operating System》数据库操作系统的设想。

嵌入内核
不是把数据拷贝到用户态再由数据库处理,而是直接在内核中执行数据库逻辑,减少数据拷贝开销。“与其把 DBMS 数据拉到用户态,不如把 DBMS 逻辑推到内核态。” 在此架构下,最频繁的数据库操作可以直接由内核完成。客户端不再需要逐一建立到数据库的连接,而是连接到一个内核内的代理(in-kernel proxy),由它批量处理并转发数据库变更,从而显著提升性能。

BPF-DB
BPF-DB 是一个支持完整事务的键值存储,它提供了一组核心操作 API(BEGIN、SET、GET、COMMIT),数据存储在内核驻留的哈希表中,最终再异步推送至用户态,落盘到持久化存储。论文地址:https://db.cs.cmu.edu/papers/2025/butrovich-sigmod2025.pdf

早期测试显示:
- BPF-DB 的吞吐量(ops/sec)约为 Redis 的两倍,与高性能 Redis 兼容实现 Dragonfly 相当;
- 同时提供完整的事务支持;
- 延迟低于 Redis 和 Dragonfly。

Pavlo 最后总结:“eBPF 让我们能够向内核注入更多智能,完成我们真正想要它去做的事情。”
篇尾:
- HUATUO(华佗)是由滴滴开源并依托 CCF 孵化的操作系统深度观测项目。
- 关注微信公众号,或扫码加微信,邀请你加入用户群(请备注姓名+单位):
