问题标签 [dpdk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1130 浏览

networking - 防止 L2 转发中的 DPDK 丢包

您好,我已经为 DPDK 实现了 pingpong。客户端发送数据包,服务器接收数据包然后返回。

服务端部分的实现类似于DPDK官网的L2转发示例。

在进行 L2 转发时,我注意到在将数据包从接收队列转发到传输队列时存在数据包丢失。

我的问题是......有没有办法让丢包为零?

我找不到解决方案,因为 DPDK 网站上的示例应用程序都有丢包。

丢包由下面的回调函数统计

这是我从 L2 转发得到的结果

因为我的实现只是乒乓球并且实现非常简单,所以我不认为在我的情况下应该有任何数据包丢失。

0 投票
1 回答
678 浏览

c++ - [C++][DPDK] 创建一个具有正确“私有大小”字节对齐的 rte_mempool

我对 DPDK 很陌生,并且通常使用字节。

我正在尝试通过将接收到的数据包复制到内存池中来修改它的长度,然后使用所述内存池创建一个 rte_mbuf,我可以对其进行修改。要创建我使用的内存池

http://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962中描述

当我收到此错误时,我似乎在此调用中总是得到错误的 priv_size 值:

我在描述中找不到更多信息,并用谷歌搜索了很多问题,但我找不到解决方案,有人能告诉我吗?

0 投票
1 回答
11923 浏览

linux - 运行 DPDK helloworld 示例时,未在大页面中报告免费大页面

我下载并构建了 dpdk-stable-16.11.4 版本(使用 x86_64-native-linuxapp-gcc 目标)。我正在运行 Ubuntu 16.04.3 LTS。根据http://dpdk.org/doc/quick-starthttp://dpdk.org/doc/guides-16.04/linux_gsg/sys_reqs.html设置大页面后

我可以看到巨大的页面。

但是当我运行 helloWorld 示例时,它抱怨没有免费的大页面,见下文。

此外,内存信息显示免费的大页面都消失了。

知道为什么会这样吗?

0 投票
1 回答
3244 浏览

dpdk - EAL:无法获取物理地址:权限被拒绝。只有 vfio 会起作用

我只是想在 dpdk 中运行 helloworld。我收到了这个奇怪的错误,但是我执行了设置脚本以及从源代码构建的所有步骤,但仍然收到错误:

请让我知道我做错了什么?

0 投票
1 回答
1260 浏览

dpdk - DirectMap1G 如何影响大页面的数量?

我已经能够使用 /etc/default/grub 中的 GRUB 命令行将默认的大页面大小设置为 1GB,但是无论我怎么做,我似乎都无法将大页面的数量设置为大于 12(无论是启动命令或 sysctl)。如果我的hugepagesize(DirectMap1G = 13631488kB,hugepagesize = 1048576kB),DirectMap1G参数看起来正好是大小的13倍。如果这是限制大页面数量的原因,有什么方法可以增加 DirectMap1G 参数的大小?谢谢。

0 投票
1 回答
653 浏览

makefile - 将静态库和 DPDK 构建到图像文件中

我有一个项目,我们称之为 AB,它看起来如下:

我已经用 make install 成功编译了 dpdk。
我正在尝试创建 dir1.a 和 dir2.a 并与 main.cpp 一起构建,当然 DPDK 库是一个“AB”图像文件。

AB 中的 Makefile(主 makefile)如下所示:

dir1 中的 Makefile 看起来:

dir2 中的 Makefile 看起来:

制作输出是:

== Build /dir1
CC c1.o
CC c2.o
CC c3.o
AR dir1.a
INSTALL-LIB dir1.a
== Build /dir2
g++ -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 - DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -I/path/to/AB/build/include -I/path/to/dpdk-stable-17.05.1/build/include -include /path/to/dpdk-stable-17.05.1/build/包括/rte_config.h -g -std=c++1y -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -lgnustl_shared -I../dir1 -I。-c -o cpp1.o cpp2.cpp
g++ -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -I/path/to/AB/build/include -I/path/to.包括 -include /path/to/dpdk-stable-17.05.1/build/include/rte_config.h -g -std=c++1y -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -lgnustl_shared -I../dir1 -I。-c -o cpp2.o cpp2.cpp

AR dir2.a
INSTALL-LIB dir2.a
/path/to/dpdk-stable-17.05.1/mk/internal/rte.install-post.mk:98:警告:覆盖目标_postinstall'<br> /path/to/dpdk-stable-17.05.1/mk/internal/rte.install-post.mk:75: warning: ignoring old recipe for target_postinstall 的配方'
/path/to//dpdk-stable-17.05.1/mk/internal/rte.clean-post.mk:61:警告:覆盖目标_postclean'<br> /path/to//dpdk-stable-17.05.1/mk/internal/rte.clean-post.mk:38: warning: ignoring old recipe for target_postclean' 的配方
/path/to//dpdk-stable-17.05.1/mk/internal/rte.build-post.mk:38:警告:覆盖目标_postbuild'<br> /path/to/dpdk-stable-17.05.1/mk/internal/rte.build-post.mk:38: warning: ignoring old recipe for target_postbuild'的配方
/path/to/AB/Makefile:40:警告:覆盖目标clean'<br> /path/to/dpdk-stable-17.05.1/mk/rte.app.mk:308: warning: ignoring old recipe for target清洁配方'
g++ -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -I/path/to/AB/build/include - .1/build/include -include /path/to/dpdk-stable-17.05.1/build/include/rte_config.h -I../dir1/ -g -std=c++1y -D__STDC_LIMIT_MACROS -D__STDC_FORMAT_MACROS -c -o main.o /path/to/AB/main.cpp
LD AB
== Build /path/to/AB/dir1
make[2]: * 没有规则来制作目标c1.o', needed bydir1.a'。>停下来。
make[1]: *
[dir1] 错误 2
make: *** [all] 错误 2

dir.a dir2.a 和 AB 镜像都创建好了!
但是:
1)为什么make最后会回到Build dir1并宣布dir1.o缺少c1.o?
2)如何摆脱“警告:忽略目标'XXX'的旧配方”?

谢谢!

0 投票
1 回答
166 浏览

ubuntu - 使用大数据包时性能下降

我一直在测试 f-stack,当数据包大小很小(如 64 ~ 1024 字节)时,f-stack 的性能非常好。但是,当数据包大小增加到某个点时。我注意到它比原来的 TCP 轮询更糟糕。

我一直在使用 f-stack 实现的客户端和服务器 pingpong 测试延迟和吞吐量。

我怀疑当前 NIC 的 MTU 速度与某些事情有关,因为当我在下面输入这样的内容时,我得到了这个:

这是延迟的结果图: 延迟结果图

如您所见,当数据包大小超过 1500 时,f-stack 性能会下降。

这是吞吐量的结果图: 吞吐量结果图

有没有办法通过大数据包来提高 f-stack 的性能?

0 投票
1 回答
1664 浏览

linux - 在 redhat 上找不到 DPDK 测试应用程序

我遇到了错误显示问题(在 redhat 上部署 dpdk 时):

sudo:x86_64-native-linuxapp-gcc/app/test:找不到命令

我不确定这是怎么回事。

现在我无法测试 dpdk,如果你以前遇到过这个,你能帮我吗?

下面有一些关于我的系统的详细信息。

供参考。

内核版本

3.10.0-693.11.1.el7.x86_64


[root@cnhzdhcp16557 用户工具]# ./dpdk-setup.sh

构建 x86_64-native-linuxapp-gcc

...

== 构建应用程序/test-crypto-perf

== 构建应用程序/test-eventdev

构建完成 [x86_64-native-linuxapp-gcc]

安装无法在 T 定义和 DESTDIR 未定义的情况下运行


插入 IGB UIO 模块

卸载任何现有的 DPDK UIO 模块

加载 DPDK UIO 模块


插入 VFIO 模块

卸载任何现有的 VFIO 模块

加载 VFIO 模块

chmod /dev/vfio

好的


插入 KNI 模块

卸载任何现有的 DPDK KNI 模块

加载 DPDK KNI 模块

按回车继续...


使用内核驱动程序的网络设备

0000:00:19.0 '以太网连接 I217-V 153b' if=enp0s25 drv=e1000e 未使用=igb_uio活动

0000:02:00.0 'Centrino Advanced-N 6235 088e' if=wlo1 drv=iwlwifi 未使用=igb_uio


海量页面信息

AnonHugePages:98304 kB

HugePages_Total:128

HugePages_免费:128

HugePages_Rsvd:0

HugePages_Surp: 0

巨页大小:2048 kB


运行测试应用程序 ($RTE_TARGET/app/test)

输入内核的十六进制位掩码以在其上执行测试应用程序

示例:要在内核 0 到 7 上执行应用程序,请输入 0xff

位掩码:f

启动应用程序

sudo:x86_64-native-linuxapp-gcc/app/test:找不到命令


以交互模式运行 testpmd 应用程序 ($RTE_TARGET/app/testpmd)

输入内核的十六进制位掩码以在其上执行测试应用程序

示例:要在内核 0 到 7 上执行应用程序,请输入 0xff

位掩码:f

启动应用程序

EAL:检测到 4 个 lcore

EAL:hugepages-1048576kB 中没有报告免费的大页面

EAL:探测 VFIO 支持...

EAL:NUMA 插槽 -1 上的 PCI 设备 0000:00:19.0

EAL:无效的 NUMA 套接字,默认为 0

EAL:探针驱动程序:8086:153b net_e1000_em

EAL:没有探测到的以太网设备

选择交互模式

USER1: 创建一个新的 mbuf 池: n=171456, size=2176,

套接字=0

EAL:错误 - 退出代码:1

原因:为套接字 0 创建 mbuf 池失败:无法分配内存


0 投票
2 回答
15942 浏览

centos7 - eal_memory.c:56:18:致命错误:numa.h:没有这样的文件或目录

当我make从 DPDK 的快速启动指令执行时,我收到以下错误:

即使已经安装了 libnuma,也会出现错误:

我正在使用 CenOS Linux 版本 7.3.1611(核心)。

我该如何解决这个问题?

0 投票
1 回答
482 浏览

amazon-web-services - 如何设置 Amazon EC2 实例本地网络来运行 pktgen-dpdk 实验?

我想使用 Amazon EC2 服务运行 dpdk 实验。但是AWS中有大量的服务。我不知道该选择哪一个。

我的实验需要使用支持 dpdk 的 10Gbps 网络适配器连接在一起的两台服务器。我在一台服务器上运行 pktgen-dpdk 向另一台服务器发送数据包。而另一个 dpdk 应用程序将在其他服务器上运行来处理这些数据包。

我想我可以租用这样的服务器c4.8xlarge c4.4xlarge。但我不知道如何在它们之间建立本地网络。本地网络应具有低延迟。

任何建议将不胜感激!谢谢!