GMAC DPDK 使用指南
本文档基于瑞芯微官方文档 Rockchip_Developer_Guide_Linux_GMAC_DPDK_CN.pdf(V1.0.0, 2023-03-06)整理,介绍 Rockchip 平台以太网 GMAC 接口的 DPDK 使用方法。
适用范围
- 芯片平台:RK3568
- 内核版本:Linux 4.19+
- 读者对象:技术支持工程师、软件开发工程师
一、概述
DPDK(Data Plane Development Kit)是数据平面开发套件,用于高性能数据包处理。本文介绍在 Rockchip 平台上使用 GMAC 接口运行 DPDK 的方法。
二、代码编译
2.1 内核编译
使能 UIO 节点(DTS)
&gmac_uio0 {
status = "okay";
};
&gmac_uio1 {
status = "okay";
};
内核配置
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 rockchip_linux_defconfig
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 menuconfig
配置项:
CONFIG_UIO=m
CONFIG_STMMAC_UIO=m
CONFIG_HUGETLBFS=y
编译烧写
make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 rk3568-evb1-ddr4-v10.img -j8
烧写后,推送 KO 文件:
adb push drivers/uio/uio.ko
adb push drivers/net/ethernet/stmicro/stmmac/stmmac_uio.ko
2.2 DPDK 编译
三、运行 DPDK 程序
3.1 挂载巨页
# 配置大页内存
echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
mount -t hugetlbfs none /mnt/huge
3.2 加载 KO
insmod uio.ko
insmod stmmac_uio.ko
3.3 设置 performance 模式
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
3.4 运行 testpmd
./testpmd -c 0x3 -n 2 -- -i
3.5 运行 l2fwd
./l2fwd -c 0x3 -n 2 -- -p 0x3
3.6 运行 l3fwd
./l3fwd -c 0x3 -n 2 -- -p 0x3 --config="(0,0,0),(1,0,1)"
四、Pktgen
4.1 下载源码
pktgen-dpdk 源码
4.2 编译 DPDK
4.3 编译 Pktgen
4.4 运行 Pktgen 程序
五、常见问题
5.1 长时间打流会丢包
可能原因:
- CPU 负载过高
- 大页内存不足
- 中断处理不及时
5.2 物理内存超 4G 空间
需配置 DMA 地址转换或使用 IOMMU。
参考资料
- 原始文档:
Rockchip_Developer_Guide_Linux_GMAC_DPDK_CN.pdfV1.0.0 - 瑞芯微官网:www.rock-chips.com