dpdk-pktgen快速发包工具踩坑日记
使用pktgen发包程序测试程序的收包
ifconfig eth2 up
执行下面的脚本
cat /proc/net/pktgen/eth2可以查看发包的速率等
参考
Lenky个人站点 » 利用pktgen发包工具做性能测试
pktgen脚本如下
#! /bin/sh# FileName: pktgen-119-120.conf# modprobe pktgenfunction pgset() {local resultecho $1 > $PGDEVresult=`cat $PGDEV | fgrep "Result: OK:"`if [ "$result" = "" ]; thencat $PGDEV | fgrep Result:fi}function pg() {echo inject > $PGDEVcat $PGDEV}# Config Start Here -----------------------------------------------------------# thread config# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly.PGDEV=/proc/net/pktgen/kpktgend_2echo "Removing all devices"pgset "rem_device_all"echo "Adding eth2"pgset "add_device eth2"#PGDEV=/proc/net/pktgen/kpktgend_3# echo "Removing all devices"#pgset "rem_device_all"#echo "Adding eth6"#pgset "add_device eth6"# device config# delay 0 means maximum speed.CLONE_SKB="clone_skb 1000000"# NIC adds 4 bytes CRCPKT_SIZE="pkt_size 60"# COUNT 0 means forever#COUNT="count 0"COUNT="count 0"DELAY="delay 0"PGDEV=/proc/net/pktgen/eth2echo "Configuring $PGDEV"pgset "$COUNT"pgset "$CLONE_SKB"pgset "$PKT_SIZE"pgset "$DELAY"pgset "dst 192.168.1.96"pgset "dst_mac 6C:92:BF:29:46:2A"#PGDEV=/proc/net/pktgen/eth6# echo "Configuring $PGDEV"# pgset "$COUNT"#pgset "$CLONE_SKB"#pgset "$PKT_SIZE"#pgset "$DELAY"#pgset "dst 192.168.1.95"#pgset "dst_mac 00:0C:29:97:9B:B4"# Time to runPGDEV=/proc/net/pktgen/pgctrlecho "Running... ctrl^C to stop"pgset "start"echo "Done"
踩坑过程
修改内核的启动hugepage配置
default_hugepagesz=1G hugepagesz=1G hugepages=64
程序启动后,一直无法找到网卡,查了后,发现是驱动没能初始化造成
解决方法:修改了Makefile,使新的驱动初始化方法能够执行
git clone git://dpdk.org/apps/pktgen-dpdk
sudo yum install libpcap-devel.x86_64
将RTE_ASSERT 修改为RTE_MBUF_ASSERT
make
sudo ./setup.sh
执行./pktgen -c 0x1f -n 3 -- -P -m "[1:3].0, [2:4].1"
start 0 发包开始
测试环境测试方案
两个口直连,可以小包打到20Gbps —— 测试硬件网卡以及发包程序;
两个口互连,就只剩调试l2fwd、cfe程序来打到线速转发了。
替代方案:
两个口互连,都跑pktgen,互相发包,看能否收发到线速(测试网卡及发包程序)
./pktgen -c 0x1f000 -n 3 -- -P -m "[13:15].0,[14:16].1" -f test/set_seq.pkt
两个dpdk-pktgen互连测线速
./pktgen -c 0x1ff1ff -n 3 --proc-type primary --file-prefix pg -- -T -P -m "[13-16:17-20].0,[1-4:5-8].1" -f test/set_seq.pkt
启动多个队列应该是有用处的,执行这个多队列的命令前,先修改内核的启动引导脚本,
将大内存调大配置为:default_hugepagesz=1G hugepagesz=1G hugepages=64
多队列,发包可以达到线速,但是两个口同时收发,还是不行。
多实例-多队列
./pktgen -c 1f000 -n 3 --proc-type auto --socket-mem 512,512 --file-prefix pg1 -b 0000:83:00.1 -- -T -P -m "[13-14:15-16].0" -f test/set_seq.pkt
./pktgen -c 3e0000 -n 3 --proc-type auto --socket-mem 512,512 --file-prefix pg2 -b 0000:83:00.0 -- -T -P -m "[18-19:20-21].0" -f test/set_seq.pkt
仍然不能解决问题。
先暂停调试pktgen dpdk的性能最高值。开始l2fwd和cfe的性能测试。
查看设备的插槽信息
dmidecode | grep -1 PCI
或者用lspci -vvv来查看
dmidecode | grep -1 PCI
Characteristics:
PCI is supported
BIOS is upgradeable
--
Port Connector Information
Internal Reference Designator: J9C1 - PCIE DOCKING CONN
Internal Connector Type: Other
--
System Slot Information
Designation: PCIE_0_CPU0
Type: x16 PCI Express 3 x16
Current Usage: Available
--
System Slot Information
Designation: PCIE_1_CPU0
Type: x8 PCI Express 3 x8
Current Usage: In Use
--
System Slot Information
Designation: PCIE_2_CPU1
Type: x16 PCI Express 3 x16
Current Usage: Available
--
System Slot Information
Designation: PCIE_3_CPU1_X16
Type: x16 PCI Express 3 x16
Current Usage: In Use
确认了两个万兆口应该是在cpu1上的,更换跑l2fwd使用的物理cpu id为12、13
查看设备的core分布
cat /proc/cpuinfo | grep "physical id\|core id\|processor"
修改了pktgen-dpdk的绑核后,有所提升(两口从15-16Gbps)
./pktgen -c 0x1f000 -n 3 -- -P -m "[13:15].0,[14:16].1" -f test/set_seq.pkt
pci-E带宽
PCI-E X16 1.0接口带宽 单向4GB/s 双向8GB/s
PCI-E X16 2.0接口带宽 单向8GB/s 双向16GB/s
从这个速度可以看出,pci-e的速率应该不是瓶颈
119、120都用pktgen互相打包
同时发包的话,不能达到线速20g,只能是16g左右的收包率;但是只打一个口
的双向的话,是可以达到10g双向收发的~
使用pktgen dpdk互连进行收发包测试,发现,单口分别收发的话,可以达到64字节小包20Gb/s的线速。但是两口同时收发不行。调大报文大小也不行。
lspci -s 0000:07:00.0 -vv | grep LnkSta
LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1-
这段话网上查询应该是该端口使用gen2 x8,最大峰值带宽32Gb/s,如果算法没错,也就是说理论上这个pcie带宽是瓶颈。
不过根据网上找到的资料显示,上述带宽是指单向带宽,双向的话则理论可以达到64Gb/s。那这里应该不是瓶颈才对。
pcie的带宽总结
http://pjack1981.blogspot.com/2012/05/how-to-know-pci-express-speed-on-server.html
dpdk-pktgen快速发包工具踩坑日记相关推荐
- 全志哪吒D1-H Tina Linux Ubuntu 22.04入门踩坑日记
哪吒D1-H Tina Linux入门踩坑日记 系统环境 源码编译 mklibs-readelf的C++标准问题 m4的SIGSTKSZ问题 libfakeroot的_STAT_VER问题 read_ ...
- Win11 + Ubuntu18.04 双系统踩坑日记
Win11 + Ubuntu18.04 双系统踩坑日记 前言 准备工作 硬件配置 镜像下载 Win11镜像下载 Ubuntu镜像下载 启动盘准备 Win11启动盘 Ubuntu启动盘 Win11安装 ...
- 【Flutter混合开发踩坑日记之‘applicationVariants‘ for extension ‘android‘】
Flutter混合开发踩坑日记之'applicationVariants' for extension 'android' 正文 坑一:Could not get unknown property ' ...
- Swarm-BZZ踩坑日记之 如何让METMASK小狐狸显示gbzz
刚入门bzz的新手还不知道小狐狸是什么的请移步上一章节:Swarm-BZZ踩坑日记之 如何在METMASK小狐狸导入节点地址 在浏览器安装好小狐狸,并添加自己的钱包地址后 会发现只显示ETH,并不显示 ...
- ReactNative 在丁香医生项目中引入的踩坑日记
ReactNative 在丁香医生项目中引入的踩坑日记 this没绑定到函数导致空指针 参考 React-Native 踩坑第二弹-undefined is not a function(evalua ...
- springboot踩坑日记—nacos: Error watching Nacos Service change
springboot踩坑日记-nacos: Error watching Nacos Service change Spring Boot :: (v2.1.5.RELEASE) 错误代码: 07-3 ...
- 微信小程序踩坑日记-微信小程序首次加载样式错乱问题
微信小程序踩坑日记-微信小程序首次加载样式错乱问题 在实际开发项目中,遇到了个棘手的问题,就是在某些因素下,进入小程序发现有些样式发生偏移.错乱等问题 问题原因:-未知(估计是组件的问题) ↓ 解决办 ...
- c++字符串操作之std::ostringstream踩坑日记
c++字符串操作之std::ostringstream踩坑日记 在开发过程中经常会遇到字符串操作,而std::string又没有format操作,这就很难受了. 于是我找到了std::ostrings ...
- Antd Pro V4 protable详解(ps:踩坑日记)
Antd Pro V4 protable详解(ps:踩坑日记) 写在前面: 在这篇文章中,你会了解到: protable 中的cloumns属性详解 protable数据加载和处理(两种方法,直接使用 ...
- midjourney指令笔记+踩坑日记+gpt论文润色指令
跟人拼团入手了midjourney,长期记录更新. midjourney指令笔记+踩坑日记 指令笔记 踩坑日记 GPT论文润色指令 指令一 指令二 指令三 指令四 指令五 指令笔记 关键词参考网址:p ...
最新文章
- vim 居中光标所在行(转载)
- Java 求1000以内的同构数_求1-10000之间的同构数
- C++的error C2668: 'pow' : ambiguous call to overloaded function错误原因及解决方法
- 【网址收藏】windows安装Docker Desktop常见问题整理
- 很简单很简单的DBHelper类
- python之Map函数 reduce 函数
- Flex 学习站点汇总,(FLEX学习站点、博客、论坛)
- matlab 求向量的交集_从零开始的matlab学习笔记——(16)函数绘图
- 一个经典的多线程同步问题
- c语言酒店管理系统,C语言酒店管理系统.pdf
- BOW和LSH的一点理解
- 【Matlab】除法取整函数用法
- vue上线后图片不显示_vue页面中图片不显示解决
- 用C语言编写PC与三菱PLC串口通讯,PC与三菱FX系列PLC通信的实现
- 全网首发!Java高级程序员面试集合
- 【乱七八糟的笔记】——前缀树
- lammps胶体输出的日志文件
- POV-RAY基础教程 - POV-Ray坐标系(7)
- 红黑树及其插入、删除操作
- 问道手游安卓服务器维护公告,问道手游安卓3月16日停服维护公告