问题标签 [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.
networking - 防止 L2 转发中的 DPDK 丢包
您好,我已经为 DPDK 实现了 pingpong。客户端发送数据包,服务器接收数据包然后返回。
服务端部分的实现类似于DPDK官网的L2转发示例。
在进行 L2 转发时,我注意到在将数据包从接收队列转发到传输队列时存在数据包丢失。
我的问题是......有没有办法让丢包为零?
我找不到解决方案,因为 DPDK 网站上的示例应用程序都有丢包。
丢包由下面的回调函数统计
这是我从 L2 转发得到的结果
因为我的实现只是乒乓球并且实现非常简单,所以我不认为在我的情况下应该有任何数据包丢失。
c++ - [C++][DPDK] 创建一个具有正确“私有大小”字节对齐的 rte_mempool
我对 DPDK 很陌生,并且通常使用字节。
我正在尝试通过将接收到的数据包复制到内存池中来修改它的长度,然后使用所述内存池创建一个 rte_mbuf,我可以对其进行修改。要创建我使用的内存池
在http://dpdk.org/doc/api/rte__mbuf_8h.html#a593921f13307803b94bbb4e0932db962中描述
当我收到此错误时,我似乎在此调用中总是得到错误的 priv_size 值:
我在描述中找不到更多信息,并用谷歌搜索了很多问题,但我找不到解决方案,有人能告诉我吗?
linux - 运行 DPDK helloworld 示例时,未在大页面中报告免费大页面
我下载并构建了 dpdk-stable-16.11.4 版本(使用 x86_64-native-linuxapp-gcc 目标)。我正在运行 Ubuntu 16.04.3 LTS。根据http://dpdk.org/doc/quick-start或http://dpdk.org/doc/guides-16.04/linux_gsg/sys_reqs.html设置大页面后
我可以看到巨大的页面。
但是当我运行 helloWorld 示例时,它抱怨没有免费的大页面,见下文。
此外,内存信息显示免费的大页面都消失了。
知道为什么会这样吗?
dpdk - EAL:无法获取物理地址:权限被拒绝。只有 vfio 会起作用
我只是想在 dpdk 中运行 helloworld。我收到了这个奇怪的错误,但是我执行了设置脚本以及从源代码构建的所有步骤,但仍然收到错误:
请让我知道我做错了什么?
dpdk - DirectMap1G 如何影响大页面的数量?
我已经能够使用 /etc/default/grub 中的 GRUB 命令行将默认的大页面大小设置为 1GB,但是无论我怎么做,我似乎都无法将大页面的数量设置为大于 12(无论是启动命令或 sysctl)。如果我的hugepagesize(DirectMap1G = 13631488kB,hugepagesize = 1048576kB),DirectMap1G参数看起来正好是大小的13倍。如果这是限制大页面数量的原因,有什么方法可以增加 DirectMap1G 参数的大小?谢谢。
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 by
dir1.a'。>停下来。
make[1]: * [dir1] 错误 2
make: *** [all] 错误 2
dir.a dir2.a 和 AB 镜像都创建好了!
但是:
1)为什么make最后会回到Build dir1并宣布dir1.o缺少c1.o?
2)如何摆脱“警告:忽略目标'XXX'的旧配方”?
谢谢!
ubuntu - 使用大数据包时性能下降
我一直在测试 f-stack,当数据包大小很小(如 64 ~ 1024 字节)时,f-stack 的性能非常好。但是,当数据包大小增加到某个点时。我注意到它比原来的 TCP 轮询更糟糕。
我一直在使用 f-stack 实现的客户端和服务器 pingpong 测试延迟和吞吐量。
我怀疑当前 NIC 的 MTU 速度与某些事情有关,因为当我在下面输入这样的内容时,我得到了这个:
这是延迟的结果图:
如您所见,当数据包大小超过 1500 时,f-stack 性能会下降。
这是吞吐量的结果图:
有没有办法通过大数据包来提高 f-stack 的性能?
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 池失败:无法分配内存
centos7 - eal_memory.c:56:18:致命错误:numa.h:没有这样的文件或目录
当我make
从 DPDK 的快速启动指令执行时,我收到以下错误:
即使已经安装了 libnuma,也会出现错误:
我正在使用 CenOS Linux 版本 7.3.1611(核心)。
我该如何解决这个问题?
amazon-web-services - 如何设置 Amazon EC2 实例本地网络来运行 pktgen-dpdk 实验?
我想使用 Amazon EC2 服务运行 dpdk 实验。但是AWS中有大量的服务。我不知道该选择哪一个。
我的实验需要使用支持 dpdk 的 10Gbps 网络适配器连接在一起的两台服务器。我在一台服务器上运行 pktgen-dpdk 向另一台服务器发送数据包。而另一个 dpdk 应用程序将在其他服务器上运行来处理这些数据包。
我想我可以租用这样的服务器c4.8xlarge
c4.4xlarge
。但我不知道如何在它们之间建立本地网络。本地网络应具有低延迟。
任何建议将不胜感激!谢谢!