DPDK-L3fwd测试

2023-11-03 23:30
文章标签 测试 dpdk l3fwd

本文主要是介绍DPDK-L3fwd测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0x01 DPDK运行要求




















注意:不同DPDK版本可能要求不同

0x02Centos 6.5 x86_64环境查看

Cpu信息:

运行lscpu,输出如下:



















socket:主板上插cpu的槽的数目;

core:就是我们平时说的“核“,每个物理CPU可以双核,四核等;

①物理CPU

cat /proc/cpuinfo |grep "physicalid"|sort |uniq|wc -l

②逻辑CPU

cat /proc/cpuinfo |grep"processor"|wc -l

③ CPU核数

cat /proc/cpuinfo |grep"cores"|uniq

 

网卡信息:

lspci


多队列网卡识别

lspci -vvv












Ethernetcontroller的条目内容,如果有MSI-X && Enable+ &&TabSize > 1,则该网卡是多队列网卡,如图4.4所示。

Message SignaledInterrupts(MSI)是PCI规范的一个实现,可以突破CPU256条interrupt的限制,使每个设备具有多个中断线变成可能,多队列网卡驱动给每个queue申请了MSI。MSI-X是MSI数组,Enable+指使能,TabSize是数组大小。

GCC版本






Linux内核信息



0x03 Linux 内核升级

因为DPDK对内核版本有要求,所以需升级内核版本,按照如下版本进行:

1、导入public key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2、安装ELRepo到CentOS-6.5中

rpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm

3、安装 kernel-lt(lt=long-term)

yum --enablerepo=elrepo-kernel installkernel-lt -y

或者安装kernel-ml(ml=mainline)

yum --enablerepo=elrepo-kernel installkernel-ml -y

4、编辑grub.conf文件,修改Grub引导顺序

复制代码

vim /etc/grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grubafter making changes to this file

# NOTICE: You do not have a /boot partition. This means that

#         all kernel and initrd paths are relative to /, eg.

#         root (hd0,0)

#         kernel /boot/vmlinuz-version ro root=/dev/sda1

#         initrd /boot/initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/boot/grub/splash.xpm.gz

hiddenmenu

title CentOS (3.10.28-1.el6.elrepo.x86_64)

       root (hd0,0)

       kernel /boot/vmlinuz-3.10.28-1.el6.elrepo.x86_64 roroot=UUID=0a05411f-16f2-4d69-beb0-2db4cefd3613 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MDcrashkernel=auto LANG=en_US.UTF-8

 rd_NO_LVM rd_NO_DM rhgb quiet

       initrd /boot/initramfs-3.10.28-1.el6.elrepo.x86_64.img

title CentOS (2.6.32-431.3.1.el6.x86_64)

       root (hd0,0)

       kernel /boot/vmlinuz-2.6.32-431.3.1.el6.x86_64 roroot=UUID=0a05411f-16f2-4d69-beb0-2db4cefd3613 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MDcrashkernel=auto LANG=en_US.UTF-8 r

d_NO_LVM rd_NO_DM rhgb quiet

       initrd /boot/initramfs-2.6.32-431.3.1.el6.x86_64.img

title CentOS (2.6.32-431.el6.x86_64)

       root (hd0,0)

       kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 roroot=UUID=0a05411f-16f2-4d69-beb0-2db4cefd3613 rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MDcrashkernel=auto LANG=zh_CN.UTF-8 rd_NO

_LVM rd_NO_DM rhgb quiet

       initrd /boot/initramfs-2.6.32-431.el6.x86_64.img

复制代码

确认刚安装好的内核在哪个位置,然后设置default值(从0开始),一般新安装的内核在第一个位置,所以设置default=0。

5、重启,查看内核版本号

[root@dev ~]# uname -r

3.10.28-1.el6.elrepo.x86_64

 

还有源码安装:

0x04 DPDK中一些慨念

Port: 网卡

Socket: 物理CPU

Core: 逻辑核

Queue:队列,网卡的接收和发送队列;

0x05 DPDK环境构建

解压:tar xzvf dpdk-16.04.tar.gz

进入对应目录:


通过sh tools/setup.sh 构建DPDK环境,具体网上有很多范例;

0x06 L3fwd编译

进入cd examples/l3fwd中: make

./build/l3fwd -c 3 -- -p 0x3--config="(0,0,0),(1,0,1)"


如果直接执行会存在一些问题,需要修改几个代码,可能是系统硬件不服务要求的情况下导致:

因nb_lcores 这个值默认一个宏的值,比较大,而目前接收队列为1;因目前网卡不支持多队列,如果硬件环境满足要求,可能不存在问题;

还存在一个参数问题:

int rte_eth_tx_queue_setup

(

uint8_t 

port_id,

uint16_t 

tx_queue_id,

uint16_t 

nb_tx_desc,

unsigned int 

socket_id,

const struct rte_eth_txconf * 

tx_conf 

)

Parameters

port_id

The port identifier of the Ethernet device.

tx_queue_id

The index of the transmit queue to set up. The value must be in the range[0, nb_tx_queue - 1]previously supplied torte_eth_dev_configure().

所以需要注意;

0x07 L3fwd在实际环境中运行

./build/l3fwd -c 3 -- -p 0x3--config="(0,0,0),(1,0,1)"

程序能成功跑起来,但是具体lpm,hash表的配置,需进一步研究;

这篇关于DPDK-L3fwd测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/341612

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

BIRT 报表的自动化测试

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birttest/如何为 BIRT 报表编写自动化测试用例 BIRT 是一项很受欢迎的报表制作工具,但目前对其的测试还是以人工测试为主。本文介绍了如何对 BIRT 报表进行自动化测试,以及在实际项目中的一些测试实践,从而提高了测试的效率和准确性 -------

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前后端吗? 有必要。本文从三个方面论述。分别是可测试,可维护,可移植。 可测试 软件黑盒测试更普遍,但很难覆盖所有应用场景。于是有了接口测试、模块化测试以及单元测试。都是通过降低测试对象

day45-测试平台搭建之前端vue学习-基础4

目录 一、生命周期         1.1.概念         1.2.常用的生命周期钩子         1.3.关于销毁Vue实例         1.4.原理​编辑         1.5.代码 二、非单文件组件         2.1.组件         2.2.使用组件的三大步骤         2.3.注意点         2.4.关于VueComponen

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,

python自动化测试框架--RobotFramework

为什么需要测试框架 在测试中,经常会为了怎样做测试、使用什么测试工具、如何使用、为什么使用测试工具、使用测试工具能帮助到我们什么等等问题而纠结。当我们选择一项测试工具时,如何组织大量自动化用例;如何合理的进行初始化清除;如何批量筛选待执行的用例;如何输出清晰的测试报告,就是需要我们考虑的事情了。下面简单介绍个使用比较广泛的自动化测试框架,即Robotframework。 RF的特点 RF:由pyt