为 DPDK 运行 Helloworld 示例?

时间:2021-07-05 07:15:01

标签: dpdk

我是 DPDK 的新手,正在运行作为 DPDK 构建的一部分给出的 Helloworld 示例。在这里,我能够成功运行并获得预期的 O/p。那就是在不同的内核上打印 Hello World。

./dpdk-helloworld -l 0-3 -n 4
EAL: Detected 112 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket

EAL: Selected IOVA mode 'VA'
EAL: No available hugepages reported in hugepages-2048kB
EAL: Probing VFIO support...
EAL: No legacy callbacks, legacy socket not created
hello from core 1
hello from core 2
hello from core 3
hello from core 0

但是当我运行 htop 时,我只能看到正在使用的第一个核心,我预计将使用四个核心。

我对 EAL 在 DPDK 中的工作方式的理解有问题吗?

1 个答案:

答案 0 :(得分:0)

可能有几个原因可能会导致您的观察,例如

  1. DPDK 示例 hello world 是一个简单的运行竞争程序模型,它在所有工作线程和主线程中启动 lcore_hello。没有无限循环的 while 或 for 在所需的 lcore 上运行。
  2. DPDK 应用程序在 VM 内运行,ISOL cpu 设置为单核。
  3. htop 采样时间不足以显示所有 4 个 CPU 都被利用的情况

由于有关设置和环境的信息有限,我必须假设您的错误原因是 3。满足您要求的解决方案是为了在所有线程中实现 100% 的利用率编辑 {{1 }} 是一个无限循环,下面的示例代码

lcore_hello

注意:我强烈建议使用具有正确采样率的 static int lcore_hello(__rte_unused void *arg) { unsigned lcore_id; lcore_id = rte_lcore_id(); printf("hello from core %u\n", lcore_id); while(1); return 0; } 来捕获特定应用程序启动的所有核心事件。

相关问题