详情页标题前

腾讯云CVM服务器使用 DPDK 测试

详情页1

操作场景

文档介绍如何通过 DPDK 方法进行云服务器高吞吐网络性能测试。

操作步骤

编译安装 DPDK

1. 准备2台测试机器,请参见 自定义配置 Linux 云服务器 购买测试机器。本文测试机器使用 CentOS 8.2 操作系统。2. 依次登录测试机器,并执行以下命令下载 DPDK 工具。如何登录云服务器,请参见 使用标准登录方式登录 Linux 实例(推荐)

yum install -y sysstat wget tar automake make gcc 
wget http://git.dpdk.org/dpdk/snapshot/dpdk-17.11.tar.gz
tar -xf dpdk-17.11.tar.gz 
mv dpdk-17.11 dpdk

3. 修改 txonly 引擎,使每个 DPDK 发包 CPU 上的 UDP 流量的端口变动产生多条流。执行以下命令,修改 dpdk/app/test-pmd/txonly.c 文件。

vim dpdk/app/test-pmd/txonly.c

i 进入编辑模式,修改以下内容:3.1.1 找到 #include "testpmd.h",另起一行输入如下内容:

RTE_DEFINE_PER_LCORE(struct udp_hdr, lcore_udp_hdr);RTE_DEFINE_PER_LCORE(uint16_t, test_port);

修改完成后,如下图所示:

腾讯云CVM服务器使用 DPDK 测试


3.1.2 找到 ol_flags |= PKT_TX_MACSEC;,另起一行输入如下内容:

/* dummy test udp port */memcpy(&RTE_PER_LCORE(lcore_udp_hdr), &pkt_udp_hdr, sizeof(pkt_udp_hdr)); 

3.1.3 然后找到下面的 for (nb_pkt = 0; nb_pkt < nb_pkt_per_burst; nb_pkt++) {,另起一行输入如下内容:

RTE_PER_LCORE(test_port)++;RTE_PER_LCORE(lcore_udp_hdr).src_port = rte_cpu_to_be_16(2222);RTE_PER_LCORE(lcore_udp_hdr).dst_port = rte_cpu_to_be_16(rte_lcore_id() * 2000 + RTE_PER_LCORE(test_port) % 64);

修改完成后,如下图所示:

腾讯云CVM服务器使用 DPDK 测试


3.1.4 找到 copy_buf_to_pkt(&pkt_udp_hdr, sizeof(pkt_udp_hdr), pkt,,将其替换为如下内容:

copy_buf_to_pkt(&RTE_PER_LCORE(lcore_udp_hdr), sizeof(RTE_PER_LCORE(lcore_udp_hdr)), pkt,

修改完成后,如下图所示:

腾讯云CVM服务器使用 DPDK 测试


Esc 输入 :wq 保存修改并退出。执行以下命令,修改 dpdk/config/common_base 文件。

vim dpdk/config/common_base

i 进入编辑模式,找到 CONFIG_RTE_MAX_MEMSEG=256,将其修改为1024。修改完成后如下图所示:

腾讯云CVM服务器使用 DPDK 测试


按 i 进入编辑模式,找到
CONFIG_RTE_MAX_LCORE=128,如果您的系统中 cpu core 数大于128就可以改成256。修改完成后如下图所示:

腾讯云CVM服务器使用 DPDK 测试


Esc 输入 :wq 保存修改并退出。说明接收及发送端机器均需修改以上配置文件,您可使用以下命令,将修改完成的文件发送至对端,避免重复修改。

scp -P 22 /root/dpdk/app/test-pmd/txonly.c root@:/root/dpdk/app/test-pmd/scp -P 22 /root/dpdk/config/common_base root@:/root/dpdk/config

4. 执行以下命令,将 dpdk/app/test-pmd/txonly.c 的 IP 地址修改为测试机器所用 IP。

vim dpdk/app/test-pmd/txonly.c

i 进入编辑模式,找到如下内容:

#define IP_SRC_ADDR (198U << 24) | (18 << 16) | (0 << 8) | 1;#define IP_DST_ADDR (198U << 24) | (18 << 16) | (0 << 8) | 2;   

将数字198、18、0、1替换为机器 IP,SRC_ADDR 为发送端 IP,DST_ADDR 为接收端 IP。5. 对应机器操作系统,执行以下命令,安装 numa 库。CentOSUbuntu

yum install numactl-devel
apt-get install libnuma-dev

6. dpdk/ 目录下执行以下命令,关闭 KNI。

sed -i  "s/\(^CONFIG_.*KNI.*\)=y/\1=n/g" ./config/*

7. 若您的操作系统内核版本较高(例如5.3),则请执行以下命令,屏蔽差异。

sed -i "s/\(^WERROR_FLAGS += -Wundef -Wwrite-strings$\)/\1 -Wno-address-of-packed-member/g" ./mk/toolchain/gcc/rte.vars.mk
sed -i "s/fall back/falls through -/g" ./lib/librte_eal/linuxapp/igb_uio/igb_uio.c

8. 执行以下命令,编译 DPDK。

make defconfig
make -j

配置大页内存

执行以下命令,配置大页内存。

echo 4096 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

若出现报错信息,则说明大页内存不足,可调整命令配置。例如:

echo 2048 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

装载内核模块及绑定接口

说明该步骤需使用 Python,请前往 Python 官网 下载并安装所需版本。本文以 Python 3.6.8 为例。1. 切换登录方式为 使用 VNC 登录 Linux 实例。由于将网卡驱动绑定至 igb_uio 用户态驱动后,该网卡将无法通过 ssh 或 IP 访问,仅支持通过 VNC 或 console 方式访问。2. 依次执行以下命令,装载 UIO 模块及绑定 virito 接口。

ifconfig eth0 0
ifconfig eth0 down
modprobe uio
insmod /root/dpdk/build/kmod/igb_uio.ko
cd /root/dpdk/usertools/
python3 dpdk-devbind.py --bind=igb_uio 00:05.0

说明命令中的 00.05.0 为示例地址,请执行以下命令,获取网卡实际地址。

python3 dpdk-devbind.py -s

完成测试后,可通过请执行以下命令,恢复网卡变更。

cd /root/dpdk/usertools/
python3 dpdk-devbind.py --bind=virtio-pci 00:05.0
ifconfig eth0 up

测试带宽及吞吐量

说明测试命令通过 txpkts 参数控制发包大小,测试带宽使用1430B,测试 pps 使用64B。此步骤的命令参数适用于 CentOS 8.2 操作系统。若使用其他系统镜像版本,则需结合实际场景调整参数后重新测试。例如,CentOS 7.4 内核版本为3.10,与 CentOS 8.2 的内核版本4.18存在性能差异,可将带宽测试命令中的 nb-cores 修改为2。关于命令参数的更多信息,请参见 testpmd-command-line-options1. 执行以下命令,发送端采用 TX only 模式启动 testpmd, 接收端启用 rxonly 模式。发送端:

/root/dpdk/build/app/testpmd  -l 8-191 -w 0000:00:05.0 -- --burst=128 --nb-cores=32 --txd=512 --rxd=512 --txq=16 --rxq=16  --forward-mode=txonly --txpkts=1430 --stats-period=1

说明其中 -l 8-191 -w 0000:00:05.0 这两个参数需要替换成您测试环境中的实际值,以下相同处理。接收端:

/root/dpdk/build/app/testpmd -l 8-191 -w 0000:00:05.0 -- --burst=128 --nb-cores=32 --txd=512 --rxd=512 --txq=16 --rxq=16 --forward-mode=rxonly --stats-period=1

2. 执行以下命令,测试 pps(UDP 64B 小包)。发送端:

/root/dpdk/build/app/testpmd -l 8-191 -w 0000:00:05.0 -- --burst=128 --nb-cores=32 --txd=512 --rxd=512 --txq=16 --rxq=16  --forward-mode=txonly --txpkts=64 --stats-period=1

接收端:

/root/dpdk/build/app/testpmd -l 8-191 -w 0000:00:05.0 -- --burst=128 --nb-cores=32 --txd=512 --rxd=512 --txq=16 --rxq=16  --forward-mode=rxonly --stats-period=1

得出如下图所示测试结果:

腾讯云CVM服务器使用 DPDK 测试



网络带宽计算

可根据接收端 PPS 和测试包长来计算当前网络的接收带宽,公式如下:
PPS × packet length × 8bit/B × 10
-9 = 带宽
结合测试得出数据,可得当前带宽为:
4692725pps × 1430B × 8bit/B × 10
-9 ≈ 53Gbps说明报文长度1430B,包含14B以太网头、4B CRC 以及20B IP 头。测试结果中 Rx-pps 为瞬时统计值,您可多次测试求其平均值,得到更准确的结果。
腾讯云云服务器官网1折活动进行中,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/139629.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云容器服务示例说明同尘科技

    操作场景 Jenkins 是连接持续集成和持续交付的桥梁,采用 Jenkins Master/Slave pod 架构能够解决企业批量构建并发限制的痛点,实现和落地真正意义上持续集成。本文介绍了如何在腾讯云容器服务(TKE)中使用 Jenkins,以实现业务快速可持续性交付,减少资源及人力成本。 工作原理 本文采用基于 TKE 的 Jenkins 外网架构,…

    2023年12月9日
  • Hologres mysql 数据如何初始化到hologres的分区表中?-云小二-阿里云

    Hologres mysql 数据如何初始化到hologres的分区表中?现在使用maxcompute 的DI节点初始化,好像DI节点分区设置那里不支持配置动态分区。 以下为热心网友提供的参考意见 可以用 Flink结果表是支持动态分区的https://help.aliyun.com/zh/flink/developer-reference/hologres…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云云函数(SCF)资源托管模式管理-云淘科技

    函数资源托管模式概述 函数资源托管模式决定了函数 SCF 运行时的资源池。默认情况下,开启函数服务后,平台会为每一个地域都分配一个函数公有云资源池,资源池由一些底层机器组成,体现为 128GB 的函数并发配额,您还可以通过购买套餐包的方式提升地域甚至是命名空间的并发额度,平台会根据新的并发额度自动分配匹配的机器,保障函数运行。为了更好的支持您在不同业务场景下…

    2023年12月9日
  • 阿里云RDS数据库功能概览-云淘科技

    本文介绍RDS PostgreSQL各版本支持的功能,便于您根据自身需要选购实例或查询已购实例的功能。 在售版本功能概览 功能 PostgreSQL 16 PostgreSQL 15、14 PostgreSQL 13 PostgreSQL 12、11 高可用系列 基础系列 高可用系列 基础系列 高可用系列 基础系列 高可用系列 基础系列 包年包月/按量付费 …

    阿里云数据库 2023年12月9日
  • 腾讯云CVM服务器迁移时间预估教程

    本文档介绍如何预估通过在线迁移方式,将您的源服务器上的系统、应用程序等从自建机房(IDC)或云平台等源环境迁移至腾讯云云服务器的时间。迁移时间主要受迁移过程中数据传输速度的影响,您可通过测试迁移源端主机和迁移目标地域主机之间传输速度,预估迁移时间。 不同场景下迁移时间预估 场景1 Linux 系统迁移的目标是云服务器时,迁移时间取决于实际数据传输所需的时间。…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。