前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百度DPDK性能压测工具dperf系列-3 使用dperf的编译和部署

百度DPDK性能压测工具dperf系列-3 使用dperf的编译和部署

作者头像
通信行业搬砖工
发布2023-03-30 21:10:30
2.3K0
发布2023-03-30 21:10:30
举报
文章被收录于专栏:网络虚拟化网络虚拟化

前面章节我们简单的介绍了dperf的相关基础概念,本章节我们将要讲述如何编译和使用dperf这款DPDK的性能压测工具。

项目地址:如果您对本项目感兴趣,欢迎您在github上给本项目点个star。

github:https://github.com/baidu/dperf

DPDK性能压测系列-1:dperf 工具简介

dperf是一款基于intel DPDK开发的高性能的开源网络压力测试仪,目前已经被DPDK官方生态项目收录。本文以centos 为例,介绍如何编译运行dperf。

首先:我们需要准备什么?

我们需要一台CentOS,所需要的配置如下图所示:仅供参考

其次:我们需要配置多大的大页内存什么?

在讲述这个的时候,我们需要回答为什么DPDK技术需要配置大页内存?这样配置的好处是什么呢?

大页(hugepage)技术主要优势在于增加单页的数据量,主要运用于需要较大内存的运用场景可以减少页面的切换,提升查询效率。高速网络的数据存储场景正是需要较大的数据缓存,因此大页技术可以很好地提升其效率。

问题2:那么怎么查看系统支持多大的大页内存,我们又该如何分配呢?

在centos 上,我们通过free -g命令可以查看系统有多少大页内存,其结果如下图所示:

代码语言:javascript
复制
[root]# free -g
              total        used        free      shared  buff/cache   available
Mem:            376         146         208           1          20         227
Swap:             3           0           3

从上面可以看到系统有376 G内存。推荐设置的大页数为系统内存的一半,如果dperf报告内存不够,再增加大页即可。

在现实的开发场景中,我们大多数使用常见是将大页内存的大小分配为1G大小,不过这个受到芯片规格的制约,我们可以通过查看CPU特性,来确定系统是否支持1G的大页内存。我们以X86 xeon为例子,通过虚拟文件系统/proc下的cpuinfo,查看其支持特性中是否支持pdpe1gb,命令如下所示:

代码语言:javascript
复制
cat /proc/cpuinfo | grep pdpe1gb

然后,我们如何查看大页内存的配置情况

代码语言:javascript
复制
[root]# cat /proc/meminfo | grep Huge
AnonHugePages:         0 kB
HugePages_Total:     140
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:    1048576 kB

我们可以看到配置的大页内存的总数为140个。

然后,我们如何编译intel DPDK

百度性能压测工具DPerf系列-2 编译intel DPDK

如何编译intel DPDK已经在上一个章节中有所介绍,本次章节不再重复介绍如何编译intel DPDK,和dpdk 纳管网口的方法。

然后,如何编译性能压测工具dperf

1、下载dperf 官方源码

git clone https://github.com/baidu/dperf.git 下载官方源码

如果遇到上述问题:

fatal: unable to access 'https://github.com/baidu/dperf.git/': OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

解决方法:

git config --global --unset http.proxy

git config --global --unset https.proxy

然后重新下载:

2、进入到dperf的工程路径进行编译

在dperf的工程文件夹下,docs主要是存放文档相关的文件;script用于存放编译运行需要的脚本文件;src路径下则是dperf的代码实现逻辑部分。

代码语言:javascript
复制
cd /root/dperf
make -j2 RTE_SDK=/root/dpdk-stable-19.11.10 RTE_TARGET=x86_64-native-linuxapp-gcc

注意:我们这里j2 表示使用 2个核来编译dperf。

3、如何启动dperf压测工具

代码语言:javascript
复制
./build/dperf -c server.conf

server.conf 为运行dperf server端的配置,同理,如果需要使用客户端,也需要类似的配置。

4、配置文件参数配置 (官方参考示例)

假设: 1. 客户端的IP是6.6.241.31 2. 服务器的IP是6.6.241.27 3. 假设网关是6.6.241.1

代码语言:javascript
复制
mode        server
cpu         0
duration    10m
port        0000:7d:00.1    6.6.241.27   6.6.241.31
client      6.6.241.31      1
server      6.6.241.27      1
listen 80 1

参数说明:

1、mode: dperf采用server模式运行;

2、cpu: dperf线程绑定在cpu 0上;

3、duration:运行时长为10分钟;

4、port: 绑定网卡的PCI号是0000:7d:00.1,接口IP为6.6.241.27,网关为6.6.241.31;这个实验中客户端与服务器在同一个局域网,dperf把网关直接指向客户端;

5、client:只有6.6.241.31才能访问dperf server;其他IP访问dperf,dperf会丢弃;

6、server:dperf服务器监听IP是6.6.241.27

7、listen:dperf服务器监听端口是80

写在最后:

本章节主要讲述dperf使用环境的dpdk的配置和编译方法以及简单的配置和运行dperf工具的基本方法,后续我们会继续介绍该工具如何进行性能压测和测试网元性能等等。dperf 目前在github上已经有1.6K 个点赞,工具已经被intel DPDK官网收录,如果您觉得dperf很好,那么欢迎您在github上star一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 通信行业搬砖工 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档