提问人:Lem0n 提问时间:11/11/2023 更新时间:11/15/2023 访问量:40
eBPF 的局限性 / 内核空间 [已关闭]
Limitations of eBPF / kernel space [closed]
问:
闭。这个问题与编程或软件开发无关。它目前不接受答案。
这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。
8天前关闭。
有一些非常快的 NIC (400 Gbps)。他们可能能够对数据包进行一些预处理/过滤,但最终这些数据包将到达 Linux 内核。平均数据包大小=10000bits,即0.04G数据包/秒;因此,如果 CPU 具有 3 GHz,则必须在每个数据包上使用 <75 个时钟周期(也许多核在这里提供了一些优势? 在这些条件下,eBPF 或内核过滤(例如防火墙)如何工作?
用户空间高 CPU 使用率是否会影响内核代码的“调度”方式,或者在最坏的情况下,用户空间代码不会运行,内核将把所有时间都花在数据包处理上(并且基本上会丢弃数据包,因为缓冲区已满,因为用户空间没有消耗它们)?
答:
0赞
matt
11/15/2023
#1
这取决于你用eBPF做什么。eBPF 代码将在运行时转换为原生说明,但 75 个周期是远远不够的。
您最好求助于内核旁路或用户空间解决方案,例如 DPDK(数据平面开发工具包)快速路径。内核本身成为高性能网络的麻烦,因此一些防火墙或 DPI 产品将保留 CPU 内核专门用于繁忙的轮询。
评论