snake test一般把数据包在各个端口之间来回转,形成比较大的满负荷。
testpmd是dpdk用来验证两个直连网卡的性能,双方对打流量。如果没有硬件(你怎么什么都没有啊?)我们一样可以玩。 Linux下的tap就是成对出现的粒子,不,虚拟网卡,创建以后,什么bridge都不要,他们就是天然的好基友。。。
# ip link add ep1 type veth peer name ep2
# ifconfig ep1 up; ifconfig ep2 up
看看ifconfig, ip link是不是出现了?
testpmd安装运行参见: http://dpdk.org/doc/quick-start
testpmd运行多个实例需要加--no-shconf
hugepage多次运行以后貌似没有释放,不用它性能下降不多, --no-huge
# ./testpmd --no-huge -c
7 -n3 --vdev="eth_pcap0,iface=ep1" --vdev=eth_pcap1,iface=ep2 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048
testpmd> start tx_first
testpmd> show port stats all
testpmd> show port stats all //两次
Rx-pps: 418634
Tx-pps: 436095
我们再创建一对taps测试,同时跑两组:
# ip link add ep3 type veth peer name ep4
# ifconfig ep3 up; ifconfig ep4 up
# ./testpmd1 --no-huge --no-shconf -c
70 --vdev="eth_pcap2,iface=ep3" --vdev=eth_pcap3,iface=ep4 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048
两个同时跑性能差不多,因为-c参数把程序分散到不同core上,top命令按“1”可以看到
那么两个对串联性能会怎样?本来数据在 EP1<->EP2, EP3<->EP4, 现在改成EP2<->EP3, EP4<->EP1.
# ./testpmd --no-huge --no-shconf -c70 --vdev="
eth_pcap1,iface=ep2" --vdev=
eth_pcap2,iface=ep3 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048
testpmd> show port stats all
这时候你将看到pps都是0! 因为一边报文发出去tap对端没连上。 现在我们在另外一个窗口把ep4-ep1联通:
# ./testpmd --no-huge -c7 -n3 --vdev="
eth_pcap0,iface=ep1" --vdev=
eth_pcap3,iface=ep4 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048
testpmd> start tx_first
testpmd> show port stats all
testpmd> show port stats all
Rx-pps: 433939
Tx-pps: 423428
跑起来了,回去第一个窗口show一样有流量,至此snake流量打通。
问题来了,为什么两个串联性能变化不大?!
# lscpu
NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22
NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23
从top看testpmd的core在1-2, 5-6上跑的,跨越NUMA这个内存效率。。。
好吧,-c参数改成15, 这是 bitmap,实际使用core 4 2 0,ep1-ep2测试结果提升50%:
Rx-pps: 612871
Tx-pps: 597219
恢复snake test, cpu分别是15, 2A, 测试性能如下,貌似慢了不少:
Rx-pps: 339290
Tx-pps: 336334
cpu如果用15,1500,结果:
Rx-pps: 540867
Tx-pps: 496891
性能比跨越numa好了很多,但是比单个tap对还是下降了1/6, 那么再看看3个taps的snake结果,第三组cpu 150000还是同一numa,居然变化不大:
Rx-pps: 511881
Tx-pps: 503456
假设cpu不够用了,第三个testpmd程序也跑在cpu 1500上面, 结果非常可悲:
Rx-pps: 1334
Tx-pps: 1334
以上测试说明:
1. 尽量不要跨越numa传递数据
2. 绑定cpu击鼓传花处理数据总吞吐量决定要最慢的一个应用
3. cpu不能复用,切换调度严重影响性能
========================
创建一个bridge br0, 把ep1, ep3, ep5加进去,用testpmd测试ep2-ep4, 这是标准网桥,看看性能下降多少:
#brctl add br0
#brctl add ep1; brctl add ep3
# ./testpmd --no-huge --no-shconf -c15 --vdev="eth_pcap1,iface=ep2" --vdev=eth_pcap3,iface=ep4 -- -i --nb-cores=2 --nb-ports=2 --total-num-mbufs=2048
Rx-pps: 136157
Tx-pps: 128207
600kpps降到130k左右,1/4不到。。。有空用ovs试试。
分享到:
相关推荐
DPDK性能和功能测试 数据平面开发工具包(DPDK)是Intel公司推出的一个开源项目,旨在提高网络处理能力和降低网络延迟。TestPMD是一个使用DPDK软件包分发的参考应用程序,主要目的是在网络接口的以太网端口之间转发...
DPDK概述和性能优化总结
这部分内容介绍了内存池库在内存分配过程中考虑到的对齐约束,以及这些约束如何影响性能。 **6.4 本地缓存** 本地缓存是提高内存池访问效率的有效手段,DPDK支持将常用数据项缓存在本地,减少频繁的内存访问。这...
DPDK中的memcpy性能优化及思考.pdf
2. DPDK性能影响因素,涉及硬件结构、操作系统版本和内核的影响、OVS性能问题、内存管理、CPU核间无锁通信以及目标CPU类型设置。这揭示了影响DPDK性能的几个关键方面,并提供了改善性能时需要考虑的因素。 3. DPDK...
Intel Data Plane Development Kit (Intel DPDK) 是一套开源的高性能数据包处理软件库集合,专为基于Intel架构的平台设计,旨在优化网络应用的性能。DPDK通过绕过操作系统内核的数据路径,实现了在用户空间对网络...
DPDK (Data Plane Development Kit) 是一套开源的高性能网络处理框架,主要针对网络包处理进行优化,广泛应用于数据中心、网络设备以及网络安全等领域。在C++编程中,有时我们需要将DPDK库集成到项目中,此时就需要...
本文将深入探讨“cpp-shuke”项目,这是一个利用DPDK(Data Plane Development Kit)技术构建的高性能DNS授权服务器。DPDK是一种开源框架,旨在加速网络应用的数据包处理,特别适用于对延迟敏感和高吞吐量的需求。 ...
**F-Stack:基于DPDK的高性能网络框架** F-Stack是一个开源的网络框架,它充分利用了DPDK(Data Plane Development Kit)库的优势,旨在提供高效、低延迟的数据处理能力,特别适合于处理大规模网络流量的场景。DPDK...
在DPDK的使用中,还通常会提及到性能测试,例如dpdk-test-crypto-perf(加密性能测试工具)和dpdk-test-eventdev(事件设备测试工具),这些工具用于测试DPDK应用程序在特定硬件上的性能。 DPDK的应用程序和工具在...
DPDK是一个基于C语言编写的库和驱动集合,旨在提高数据平面应用程序的工作效率和数据处理性能12。 DPDK的主要特点 轮询模式:通过轮询模式避免中断上下文切换的开销,提高处理效率。 用户态驱动:绕过...
DPDK GRO GSO 的转发性能提升实例 本文主要介绍了 DPDK 中的 GRO(Generic Receive Offload)和 GSO(Generic Segmentation Offload)技术对网络应用性能的提升。GRO 和 GSO 分别是 software-based 的接收及分片 ...
"DPDK绑定和解绑网卡脚本"是DPDK部署过程中的关键步骤,因为DPDK需要将物理网卡从操作系统驱动中分离出来,以便独占使用这些网卡资源。绑定过程就是将网卡从默认的内核驱动下移除,转而使用DPDK提供的用户空间驱动;...
DPDK 工程师手册 本资源为 DPDK 工程师手册,提供...本资源提供了 DPDK 工程师手册,涵盖了 DPDK 的架构、编程指南、性能优化、网络开发、Linux 服务器开发、C/C++ 编程等方面的知识,是 DPDK 工程师必备的参考文献。
【Intel X710/82599万兆网卡DPDK测试方法】文档主要介绍了如何使用DPDK(Data Plane Development Kit)测试Intel X710和82599系列万兆网卡的数据传输性能。DPDK是一个开源软件框架,旨在提高网络应用的数据包处理...
**DPDK大会2017 PPT:SDN与高性能网络技术** DPDK(Data Plane Development Kit)是一种开源软件框架,旨在加速网络数据包处理,提高网络性能,尤其是在虚拟化环境中。2017年的DPDK大会聚焦了SDN(Software-Defined...
因此,从计算机架构师的角度来看,DPDK的高性能数据平面处理能力是基于其突破了传统网络堆栈的局限,优化了从物理网卡到应用程序的数据传输路径。这些优化包括在用户空间进行关键的网络处理,使用零拷贝技术,采用大...