【问题标题】:rte_eth_dev_count_avail() from the DPDK API returns 0DPDK API 中的 rte_eth_dev_count_avail() 返回 0
【发布时间】:2020-05-20 21:08:51
【问题描述】:

我正在尝试使用 DPDK api 并尝试计算可供在 DPDK 上运行的应用程序使用的以太网设备的数量。为此,我使用了 DPDK api 提供的 rte_eth_dev_count_avail() 方法,但即使我看到绑定到 DPDK 兼容设备驱动程序的设备,它也会返回 0。 这是 ./usertools/dpdk-devbind.py --status

的输出

如您所见,我有多个设备驱动程序绑定到 DPDK 兼容设备驱动程序,所以不知道为什么会发生这种情况。

我还添加了 cmets 中提到的 ldd [binary] 的输出。

我正在添加命令 egrep "SHARED|IGB_PMD|EM_PMD" $RTE_TARGET/.config 的输出

./usertools/dpdk-pmdinfo.py -d /usr/share/hwdata/pci.ids [二进制] | 的输出grep -i "PMD 名称"

【问题讨论】:

  • 您的问题可能是原因之一 1) 以共享库模式构建,但忘记使用适当的 PMD 添加选项 -d。 2) 使用自定义 make 文件构建,忘记在 LD_FLAGS 中为 ethdev 构造函数添加正确的库。 3) 在.config 中为 IGB PMD 禁用 e1000 或 EM。也分享ldd [binary]cmd line arguments的结果
  • @VipinVarghese 我已经用 ldd [binary] 的输出更新了这个问题
  • 感谢您的更新,看来您正在使用静态构建。现在我们有两种情况。请运行 egrep "SHARED|IGB_PMD|EM_PMD" $RTE_TARGET/.config,使用 -w 0000:01:00.1 -w 0000:01:00.2 -w 0000:01:00.3 运行应用程序。分享应用程序cmdline options。如果使用自定义 make 文件运行 make -n 如果它是 bash 脚本回显 cmd
  • 我正在等待更新以使用白名单选项、cmdline 运行,以及您是使用 DPDK makefile 还是自定义运行。让我为你简化一下,./usertools/dpdk-pmdinfo.py -d /usr/share/misc/pci.ids examples/l2fwd/build/l2fwd | grep -i "PMD NAME" 的输出是什么,你应该找到IGB|EM
  • 用你的binary替换l2fwd

标签: dpdk


【解决方案1】:

@Ashwin 看起来您的静态构建没有 IGBEM 的 RTE_PMD。这可能是由于custom makefilepresence of pre-installed DPDK pkg。请检查您的环境。

没有 IGB|E1000 会导致找不到 i350

编辑:分析 https://github.com/tcp-acceleration-service/tas/blob/master/Makefile 缺少库。请加-lrte_pmd_e1000 -Wl

您也可以编辑DPDK_PMDS 以反映e1000

【讨论】:

  • 我有一个预安装的 DPDK pkg。我不能运行多个 DPDK 版本吗?虽然不是必需的,我可以在服务器上运行一个版本,在这种情况下我该如何解决这个问题?
  • 您应该分享详细信息custom makefilecopied makefile from DPDK example。在预装场景下,尝试将ifeq ($(shell pkg-config --exists libdpdk && echo 0),0)修改为ifeq ($(shell pkg-config --exists libdpdk && echo 0),1)
  • @AshwinKumar 正如建议的那样,通过添加 PMD 来构建标志解决了该问题。请接受并投票赞成答案/
猜你喜欢
  • 1970-01-01
  • 2018-07-07
  • 1970-01-01
  • 2015-06-15
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多