DPDK使用AF_XDP PMD运行testpmd时创建xsk socket失败如何解决
DPDK AF_XDP驱动启动失败解决方案
前置检查项
- 确认内核配置除
CONFIG_XDP_SOCKETS=y外,同时开启CONFIG_BPF_SYSCALL=y、CONFIG_XDP_SOCKETS_DIAG=y,这是5.4版本内核AF_XDP正常工作的必要依赖 - 调整内存锁定限制,AF_XDP需要锁定UMEM内存,默认ulimit限制会导致创建socket失败,执行命令临时调整:
如需永久生效可修改ulimit -l unlimited/etc/security/limits.conf配置 - 配置大页,日志中提示无可用1G大页,AF_XDP默认依赖大页分配UMEM内存,可先配置2M大页:
echo 4096 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages - 确认目标网卡状态:执行
ip link set eth3 up开启网卡,执行ip link set dev eth3 xdp off清理网卡上已加载的其他XDP程序
正确启动命令调整
原命令存在3个核心问题:IOVA模式默认选PA不兼容AF_XDP、未限制队列数量(5.4内核AF_XDP不支持多队列)、未指定兼容的XDP模式,同时默认探测的物理MLX5网卡会占用端口资源,建议调整为如下命令:
dpdk-testpmd --no-pci --iova-mode=va --vdev=net_af_xdp0,iface=eth3,queue=0,xdp_mode=skb -- -i --total-num-mbufs=10240 --rxq=1 --txq=1
参数说明:
--no-pci:关闭PCI设备探测,仅加载指定的AF_XDP虚拟设备,避免物理网卡占用端口资源--iova-mode=va:指定IOVA模式为虚拟地址模式,适配AF_XDP用户态内存映射逻辑xdp_mode=skb:使用通用XDP模式,5.4内核下兼容性远高于原生驱动模式,适配绝大多数网卡--rxq=1 --txq=1:限制收发队列数量为1,适配5.4内核AF_XDP单队列限制
内容的提问来源于stack exchange,提问作者lcl1996
相关产品推荐
相关产品推荐

