Linux:为什么性能工具需要 BPF 技术

BPF是Linux系统中的创新技术,它增强了包过滤性能和安全性。通过BPF虚拟机,过滤器在内核中直接执行,避免了数据包复制到用户态,提升了效率。扩展版BPF(eBPF)进一步增强了功能,成为一种通用虚拟机,支持更多的寄存器和64位字长,可用于高性能的内核级性能工具,减少生产环境的开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BPF是近年来Linux 系统技术领域一个巨大的创新。作为 Linux 内核的一个关键发展节点,其重要程度不亚于虚拟化、容器、SDN 等技术。

▼BPF 的工作方式十分有趣 :

最终用户使用 BPF 虚拟机的指令集(也称 BPF 字节码)定义过滤器表达式,然后传递给内核,由解释器执行。这使得包过滤可以在内核中直接进行,避免了向用户态进程复制每个数据包,从而提升了数据包过滤的性能,tcpdump(8) 就是这样工作的。

BPF 还提供了安全性保障,因为用户定义的过滤器在执行前必须首先通过安全性验证。

早期的包过滤必须在内核空间执行,安全是一个硬性要求。大家可以从下图了解这一切是如何工作的。

file

tcpdump 和 BPF

在运行 tcpdump(8) 时带上命令行参数 -d,可以打印出使用过滤器表达式的 BPF 指令。例如 :



▊** 经典 BPF 与扩展版 BPF**

最初的 BPF 现在被称为“经典 BPF”,它是一个功能有限的虚拟机。它有两个寄存器,一个由 16 个内存槽位组成的临时存储区域和一个程序计数器。以上部件均按 32 位寄存器大小运行。经典 BPF 于 1997 年进入 Linux 内核版本 2.1.75。

而后Alexei Starovoitov 创造了扩展版 BPF(eBPF)。这是 20 年来 BPF 的第一次重大更新,此举也将 BPF 扩展为一个通用的虚拟机。

虽然BPF通常被称为虚拟机,不过这往往指的是它的实现规范。BPF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值