dpdk - 为 DPDK 运行 Helloworld 示例?
问题描述
我是 DPDK 的新手,正在运行作为 DPDK 构建的一部分给出的 Helloworld 示例。在这里,我能够成功运行并获得预期的 O/p。那就是在不同的 lcore 上打印 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
在所有工作线程和主线程中启动。在所需的 lcore 上运行没有无限循环的 while 或 for。 - DPDK 应用程序在 VM 内运行,ISOL cpu 设置为单核。
- htop 采样时间不足以显示所有 4 个 cpu 都已使用的情况
由于有关设置和环境的信息有限,我不得不假设您的错误原因是 3。您的要求的解决方案是为了在所有线程中实现 100% 的利用率,编辑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;
}
注意:我强烈建议使用perf record
正确的采样率来捕获特定应用程序启动的所有核心事件。
推荐阅读
- asp.net-core - ASP.NET Core 标识扩展不保存
- .htaccess - 仅将 oldsite.com 重定向到 newsite.com,但不包括 oldsite.com/wp-login.php
- c# - C# 接口不允许成员类满足要求
- javascript - 通过 API 添加 Stripe 订阅
- javascript - 想要从我单击它的按钮获取先前的输入
- sql-server - T-SQL 从数字中获取一周的第一天
- c++ - 使用鼠标事件计算相机的位置和旋转
- excel - 尝试使用 FileSystemObject 打开 csv 时出错:代码运行但什么也不做
- html - X 和 Y 轴上的 HTML 表格滚动功能
- java - 如何在 AKKA 的有限状态机中正确传递数据