eBPF 进阶: 内核新特性进展一览

Linux 内核在 2022 年主要发布了 5.16-5.19 以及 6.0 和 6.1 这几个版本,每个版本都为 eBPF 引入了大量的新特性。本文将对这些新特性进行一点简要的介绍,更详细的资料请参考对应的链接信息。总体而言,eBPF 在内核中依然是最活跃的模块之一,它的功能特性也还在高速发展中。某种意义上说,eBPF 正朝着一个完备的内核态可编程接口快速进化。

BPF kfuncs

BPF子系统暴露了内核内部算法和数据结构的许多方面;这自然导致了对在内核变化时保持接口稳定性的关注。长期以来,BPF对用户空间不提供接口稳定性保证的立场似乎一直有点问题;过去,内核开发者发现他们不得不维护那些不打算稳定的接口。现在BPF社区开始考虑至少为它的一些接口提供明确的稳定性承诺可能意味着什么。

BPF允许由用户空间加载的程序被附加到大量钩子中的任何一个,并在内核中运行–在子系统的验证器得出这些程序不会损害系统的结论之后。一个程序将获得由它所连接的钩子提供给它的内核数据结构的访问权。在某些情况下,程序可以直接修改这些数据,从而直接影响内核的运行;在其他情况下,内核将对BPF程序返回的值采取行动,例如,允许或不允许某项操作。

还有两种机制,内核可以通过它们使BPF程序获得额外的功能。帮助函数(或 “helpers”)是为提供给BPF程序而编写的特殊函数;它们从扩展BPF时代开始就存在了。被称为kfuncs的机制比较新;它允许任何内核函数被提供给BPF,可能会有一些限制。Kfuncs更简单、更灵活;如果它们首先被实现,那么似乎不太可能有人会在后来添加帮助器。也就是说,kfuncs有一个重要的限制,即它们只能被JIT编译的BPF代码访问,所以它们在缺乏JIT支持的架构上是不可用的(这个列表目前包括32位Arm和RISC-V,尽管增加这两种支持的补丁正在开发中). 每个kfunc都为BPF程序提供了一些有用的功能,但几乎每个kfunc都暴露了内核内部工作方式的某些方面。

Bloom Filter Map:5.16

布隆过滤器是一种节省空间的概率数据结构,用于快速测试一个元素是否存在于一个集合中。在布隆过滤器中,假阳性是可能的,而假阴

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值