如何解决为 DPDK 运行 Helloworld 示例?
我是 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 中的工作方式的理解有问题吗?
解决方法
可能有几个原因可能会导致您的观察,例如
- DPDK 示例
hello world
是一个简单的运行竞争程序模型,它在所有工作线程和主线程中启动lcore_hello
。没有无限循环的 while 或 for 在所需的 lcore 上运行。 - DPDK 应用程序在 VM 内运行,ISOL cpu 设置为单核。
- 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;
}
来捕获特定应用程序启动的所有核心事件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。