TGTGInsighttelegram intelligenceLIVE / telegram public index
← Welcome to the Black Parade
Welcome to the Black Parade avatar

TGINSIGHT POST

Post #972

@TheB1ackParade

Welcome to the Black Parade

Views1,660Post view count
PostedDec 612/06/2025, 10:29 AM
Post content

Post content

最近一直在优化公司观测性项目的性能,真好玩😋(我有个很烂的理论:上班的本质是坏的,但是工作需求使我有动力去思考之前忽视的问题,反而又执行好了🤬) 其中最有趣的一个发现是 bpf ringbuf。 我在绞尽 pre-cum 想办法降低 bpf kern -> user 的性能开销时,我发现 cilium/ebpf 的 ringbuf Read/ReadInto 居然不是零拷贝?那 ringbuf reserve 本身的零拷贝优势直接原地消失了,这么多年居然无人发现。于是 PR 走起,在 1024 字节的 big record 的情况下性能乘以四: https://github.com/cilium/ebpf/pull/1915 虽然比利时人看起来不太想合并的样子,我无所谓,反正我已经通过读私有指针 hack 进自己的项目了,我自己爽到就行( (零拷贝同步是这样的,隔壁 splice 都因此烂掉了: https://lwn.net/Articles/923237/ (零拷贝 zero copy 在内核里常常被缩写为 zc,物理世界的朋友知道 zc 于我是什么意思😋以后请叫我零拷贝,谢谢。 顺便看了一下 rust 版本的 aya-rs/aya,发现它们的 ringbuf next() (居然 😀)是零拷贝,而且得益于生命期管理,在 Drop 时自动 consume,雅!这一波 aya 完爆 c/ebpf ... bpf ringbuf 本身的实现也非常有意思,它把一个 page 两次 map 到连续的虚拟内存,这样在第一区域任意读线性内存就能自动折回来,雅!我知道是很古老的技巧了,对不起我太没见识了😭我亲自画了一张示意图,应该还是很容易理解的。。。