首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >dperf的环境搭建和操作

dperf的环境搭建和操作

作者头像
紫昭
发布2025-11-29 08:52:05
发布2025-11-29 08:52:05
30
举报

克隆源码 git clone https://github.com/baidu/dperf.git cd dperf

编译

make

运行测试查看是否成功

./build/dperf -h

在进行编译的时候出现下面的错误: root@oitech-pc:/home/oitech/桌面/dperf# make /bin/sh: 1: pkg-config: not found Makefile:44: *** "no installation of DPDK found"。 停止。

表明编译dperf需要依赖DPDK,但是系统中没有安装DPDK

将dperf安装到系统路径中:sudo cp build/dperf /usr/local/bin/

从源码安装DPDK:

安装编译依赖

sudo apt install -y build-essential meson ninja-build python3-pip

下载并编译 DPDK

wget https://fast.dpdk.org/rel/dpdk-22.11.4.tar.xz tar -xf dpdk-22.11.4.tar.xz cd dpdk-22.11.4

配置和编译

meson build cd build ninja sudo ninja install

设置环境变量

echo 'export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc

echo 'export LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH' >> ~/.bashrc

source ~/.bashrc

回到 dperf 目录重新编译

cd /home/oitech/桌面/dperf make clean make

出现编译错误,麒麟软件源中没有对librte_net_bond的驱动,直接在makefile中将相应的驱动进行移除,然后在进行编译:

在 dperf 目录中

cd /home/oitech/桌面/dperf

备份原 Makefile

cp Makefile Makefile.backup

移除对 librte_net_bond 的引用

sed -i 's/-lrte_net_bond//g' Makefile

重新编译

make clean make

查看官方文档 进行相应的参数的补充(完成)

现在查看dpdk是否安装正确,以及相应的网卡是否绑定到PMD驱动(dpdk相应的驱动没有完成)

查看相应网卡的地址:lspci

在DPDK目录下,将网卡驱动绑定到DPDK下: 网卡一般处于活动状态: 步骤1:需要先关闭网络接口:网卡:eno1 关闭eno1接口:ip link set eno1 down 验证接口状态:ip link show eno1

步骤2:将网卡重新绑定到vfio-pci:网卡号:01:00.0 绑定:./usertools/dpdk-devbind.py --bind=vfio-pci 0000:01:00.0 验证绑定结果:./usertools/dpdk-devbind.py --status net

预期成功输出: Network devices using DPDK-compatible driver ============================================ 0000:01:00.0 'I210 Gigabit Network Connection' drv=vfio-pci unused=igb

Network devices using kernel driver =================================== 0000:02:00.0 'I210 Gigabit Network Connection' if=eno2 drv=igb unused=vfio-pci Active

然后设置大页内存:

1. 设置大页内存

echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

2. 挂载大页文件系统

sudo mkdir -p /dev/hugepages sudo mount -t hugetlbfs nodev /dev/hugepages

3. 验证设置

port 0000:82:00.0 10.79.10.144 10.79.10.106

duration 150s

cps 300k

client 16.0.0.1 1

server 48.0.0.1 5

tx_burst 128

payload_size 1400

listen 80 1

protocol udp

rss l3

client.conf: mode client

cpu 0 1 2 3 4

port 0000:81:00.0 10.79.10.106 10.79.10.144

duration 150s

cps 300k

client 16.0.0.1 1

server 48.0.0.1 5

tx_burst 128

launch_num 3

payload_size 1400

listen 80 1

protocol udp

cc 1

pipeline 4

keepalive 0us

rss l3

双端口测试:(跟单端口类似,只不过需要两个网口绑定到dpdk下面,也就是绑定到vfio-pci驱动下面)

服务端:

mode server

listen 80 1

port 0000:01:00.0 6.6.10.2 6.6.10.1 9c:69:b4:68:91:d8

client 6.6.30.2 16

server 6.6.50.2 4

port 0000:01:00.1 6.6.20.2 6.6.20.1 9c:69:b4:68:91:d9

client 6.6.40.2 16

server 6.6.60.2 4

#port bond4:2(0000:01:00.0,0000:01:00.1) 6.6.10.2 6.6.10.1 9c:69:b4:68:91:d8

#client 6.6.30.2 16

#server 6.6.50.2 8

duration 150s

tx_burst 128

jumbo 9600

payload_size 9500

cps 256

cpu 0 1 2 3 4 5 6 7

protocol udp

客户端:

mode client

cpu 0 1 2 3 4 5 6 7

#port bond4:2(0000:81:00.0,0000:81:00.1) 6.6.10.1 6.6.10.2 9c:69:b4:68:91:c8

#client 6.6.30.2 16

#server 6.6.50.2 8

port 0000:81:00.0 6.6.10.1 6.6.10.2 9c:69:b4:68:91:c8

client 6.6.30.2 16

server 6.6.50.2 4

port 0000:81:00.1 6.6.20.1 6.6.20.2 9c:69:b4:68:91:c9

server 6.6.60.2 4

client 6.6.40.2 16

duration 150s

cps 256

tx_burst 128

launch_num 4

payload_size 9500

listen 80 1

protocol udp

cc 1

keepalive 0us

jumbo 9600

pipeline 4

在进行dpdk的配置的时候,不知道它的相应的网口的ip该如何进行配置: 在将网口的驱动挂载到dpdk之后,不能使用ifconfig等查询网口的ip地址,但是在配置文件中又需要相应的ip地址,那么根据官方文档的描述,不需要查询相应的ip,直接编辑一个虚拟的ip地址,进行相互连接就可以,例如服务器:192.168.100.1 客户端:192.168.100.2

在后面环境配置完成后,进行相应的文件配置的时候,使用配置文件,在官方进行查询

关于海光和intelCPU的使用差异(vfio-pci驱动不能正确加载的问题):

在使用海光的CPU的时候,dpdk的vfio驱动能够正确的进行加载,但是更换成了intel的CPU的时候,会显示下面的错误: root@oitech-pc:/home/oitech/桌面/dpdk-stable-22.11.10# ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:01:00.1 Error: bind failed for 0000:01:00.1 - Cannot bind to driver vfio-pci: [Errno 19] No such device Error: unbind failed for 0000:01:00.1 - Cannot open /sys/bus/pci/drivers//unbind: [Errno 13] Permission denied: '/sys/bus/pci/drivers//unbind' root@oitech-pc:/home/oitech/桌面/dpdk-stable-22.11.10# ./usertools/dpdk-devbind.py --status 即不能进行使用相应的vfio-pci进行驱动的绑定,也不能使用morprobe进行模块的挂载,经过查询,发现是因为,在intel的平台中,vfio-pci的驱动没有被正确的编译在内核中,需要将vfio-pci编译在内核中: 先查看是否支持并开启了IOMMU: intel: cat /proc/cpuinfo | grep vmx AMD: cat /proc/cpuinfo | grep svm

如果支持IOMMU: sudo vim /etc/default/grub :在GRUB_CMDLINE_LINUX行添加intel_iommu=on iommu=pt sudo update-grub:更新linux启动配置文件 sudo reboot:重启系统,重启之后使用cat /proc/cmdline查看有"intel_iommu=on iommu=pt"标识则说明成功了

然后在使用sudo modprobe vfio-pci进行驱动的安装 如果不支持IOMMU: 将vfio相关的驱动都卸载掉 rmmod vfio_iommu_type1 rmmod vfio-pci rmmod vfio

#重新安装驱动 modprobe vfio enable_unsafe_noiommu_mode=1 modprobe vfio-pci

在进行dpdk的配置的时候,不知道它的相应的网口的ip该如何进行配置: 在将网口的驱动挂载到dpdk之后,不能使用ifconfig等查询网口的ip地址,但是在配置文件中又需要相应的ip地址,那么根据官方文档的描述,不需要查询相应的ip,直接编辑一个虚拟的ip地址,进行相互连接就可以,例如服务器:192.168.100.1 客户端:192.168.100.2

在后面环境配置完成后,进行相应的文件配置的时候,使用配置文件,在官方进行查询

是需要写脚本进行相关的测试的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译
  • 运行测试查看是否成功
  • 安装编译依赖
  • 下载并编译 DPDK
  • 配置和编译
  • 设置环境变量
  • 回到 dperf 目录重新编译
  • 在 dperf 目录中
  • 备份原 Makefile
  • 移除对 librte_net_bond 的引用
  • 重新编译
  • 1. 设置大页内存
  • 2. 挂载大页文件系统
  • 3. 验证设置
  • 在后面环境配置完成后,进行相应的文件配置的时候,使用配置文件,在官方进行查询
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档