You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XDP程序调用bpf_arena_alloc_pages报错,相关疑问求助

XDP中使用BPF_ARENA与bpf_arena_alloc_pages问题解答

报错原因

你遇到的"program must be sleepable to call sleepable kfunc bpf_arena_alloc_pages"报错,核心原因是常规XDP程序运行在网络设备驱动的中断上下文,不允许执行睡眠操作,而bpf_arena_alloc_pages属于可睡眠kfunc,只能在允许睡眠的eBPF上下文调用。

文档标注XDP支持的原因

eBPF文档将XDP列为该kfunc的支持类型,实际指向的是内核5.19及以上版本引入的XDP_SLEEPABLE特殊程序类型,而非传统的XDP程序。

BPF_F_SLEEPABLE标志对XDP的适用性

BPF_F_SLEEPABLE标志不适用于XDP程序,它主要针对TC、tracepoint等本身支持或可切换到睡眠上下文的eBPF类型。XDP有专门的BPF_F_XDP_SLEEPABLE加载标志,用于启用可睡眠XDP模式。

在XDP中使用bpf_arena_alloc_pages的步骤

  • 确认内核版本≥5.19,XDP_SLEEPABLE特性在该版本引入。
  • 加载XDP程序时,通过bpf()系统调用传入BPF_F_XDP_SLEEPABLE标志,将程序加载为可睡眠XDP类型。该类型程序运行在软中断上下文,允许执行可睡眠操作。
  • 代码中确保没有违反可睡眠上下文的操作(如持有自旋锁、禁用抢占等)。

性能提示

可睡眠XDP程序的调度延迟比常规XDP更高,性能有所下降,适合对性能要求不极致但需要使用可睡眠kfunc的场景。

内容的提问来源于stack exchange,提问作者pedro_m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:07:07