有什么方法可以减少 Debian 上 alloc_skb 中 deactivate_slab.isra.82 的成本

有什么方法可以减少 Debian 上 alloc_skb 中 deactivate_slab.isra.82 的成本

我有一个 UDP 繁重的工作流程,由于deactivate_slab.isra.82调用__alloc_skb(15% 以上的 CPU 时间)而出现瓶颈。 alloc 方法似乎在 Intel 卡驱动程序内部最频繁地调用(我假设是针对 RX 路径),但也由我的发送系统调用调用。

由于这个瓶颈,我只能在 10G 服务器上推送大约 1.1Gbps,我想知道是否可以调整任何内核参数来减少这种开销,也许可以扩大 SKB 的空闲列表的大小,以便内核- malloc 路径不那么频繁地被命中。

我已经注意到slub_debugDebian 上默认启用了该功能,这进一步减慢了我的应用程序速度(从 850Mbps 降至 1.1Gbps)。

答案1

这是我对 slub_debug 选项的误解,关闭它的正确方法是“slub_debug=-”,“slub_debug=off”禁用了slab调试检查,但不是所有调试代码。

正确禁用调试模式后,我发现 UDP 繁重工作负载的性能显着提升,并且不再有明显的单个内核函数导致瓶颈。

相关内容