DPDK学习笔记1——入门命令

早就想深入了解一下dpdk,但真正沉下心来学习的动力还是工作需要。之前对于网卡、驱动这些也有过一些了解,正好趁着这次机会做一下系统的整理。这个系列主要记录我在学习dpdk时遇到的问题和一些心得,既作学习成果,也备不时之需。

一、相关参数

./rte-app -c COREMASK [-n NUM] [-b <domain:bus:devid.func>] \
          [--socket-mem=MB,...] [-m MB] [-r NUM] [-v] [--file-prefix] \
          [--proc-type <primary|secondary|auto>] [-- xen-dom0]

选项描述如下:

  • -c COREMASK: 要运行的内核的十六进制掩码。注意,平台之间编号可能不同,需要事先确定。
  • -n NUM: 每个处理器插槽的内存通道数目。
  • -b <domain:bus:devid.func>: 端口黑名单,避免EAL使用指定的PCI设备。
  • --use-device: 仅使用指定的以太网设备。使用逗号分隔 [domain:]bus:devid.func 值,不能与 -b 选项一起使用。
  • --socket-mem: 从特定插槽上的hugepage分配内存。
  • -m MB: 内存从hugepage分配,不管处理器插槽。建议使用 --socket-mem 而非这个选项。
  • -r NUM: 内存数量。
  • -v: 显示启动时的版本信息。
  • --huge-dir: 挂载hugetlbfs的目录。
  • --file-prefix: 用于hugepage文件名的前缀文本。
  • --proc-type: 程序实例的类型。
  • --xen-dom0: 支持在Xen Domain0上运行,但不具有hugetlbfs的程序。
  • --vmware-tsc-map: 使用VMware TSC 映射而不是本地RDTSC。
  • --base-virtaddr: 指定基本虚拟地址。
  • --vfio-intr: 指定要由VFIO使用的中断类型。(如果不支持VFIO,则配置无效)。

其中 -c 是强制性的,其他为可选配置。

将DPDK应用程序二进制文件拷贝到目标设备,按照如下命令运行(我们假设每个平台处理器有4个内存通道,并且存在core0~3用于运行程序):

./helloworld -c f -n 4

Note

选项 --proc-type 和 --file-prefix 用于运行多个DPDK进程。请参阅 “多应用程序实例” 章节及 DPDK 编程指南 获取更多细节。

二、查看cpu相关信息的命令

  •   lscpu
  •          cat /proc/cpuinfo

         

Note

可以使用另一个Linux工具 lstopo 来获取逻辑core布局的图形化信息。在Fedora Linux上, 可以通过如下命令安装并运行工具:

sudo yum install hwloc
./lstopo

三、关于Hugepage内存

使用socket-mem选项可以为特定的插槽请求特定大小的内存。通过提供 --socket-mem 标志和每个插槽需要的内存数量来实现的,如 --socket-mem=0,512 用于在插槽1上预留512MB内存。 类似的,在4插槽系统上,如果只能在插槽0和2上分配1GB内存,则可以使用参数``–socket-mem=1024,0,1024`` 来实现。 如果DPDK无法在每个插槽上分配足够的内存,则EAL初始化失败。

四、使用 dmidecode 来检查内存配置

dmidecode -t memory | grep Locator

五、使用 dmidecode 来确定内存频率

dmidecode -t memory | grep Speed

六、使用 lspci 命令来检查PCI插槽的速率

lspci -s 01:00.0 -vv | grep LnkSta

七、使用命令 cpu_layout 来检查CPU布局

使用usertools目录下的cpu_layout.py或者lscpu查看。

八、列出所有的网卡的PCI地址及设备ID.

lspci -nn | grep Eth

九、检测PCI设备相关联的NUMA节点:

cat /sys/bus/pci/devices/0000\:xx\:00.x/numa_node

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
DPDK (Data Plane Development Kit) 是一个高性能的网络应用开发框架,它专注于加速数据平面操作,如网络转发。`testpmd` 是 DPDK 的一个实用工具,用于测试和演示 DPDK 驱动的各种功能,特别是网卡的加速。 `EAL` 是 DPDK 架构中的一个重要部分,代表 `Early Abstraction Layer`,它是 DPDK 进程的初始化阶段。在运行 `dpdk-testpmd` 命令时,EAL 命令用于配置 DPDK 环境,包括硬件选择、内存分配、日志设置等。 一些常见的 `dpdk-testpmd EAL` 命令参数示例: 1. `-n` 或 `--nb-cores`: 指定使用多少个CPU核心来处理数据包,例如 `-n4` 表示使用4个核心。 2. `-c` 或 `--socket-mem`: 设置每个CPU核心的内存分配,如 `-c1024,2048` 分配1GB和2GB内存给每个核心。 3. `-l` 或 `--log-level`: 设置日志级别,如 `-lerror` 只显示错误信息。 4. `-i` 或 `--adapter`: 选择要使用的网卡,如 `-iigbxe` 选择Intel iGbE网卡。 5. `-P` 或 `--proc-type`: 设定进程类型,如 `auto` 自动检测,`huge` 使用大页内存。 完整的 `dpdk-testpmd EAL` 命令可能如下所示: ```bash sudo dpdk-testpmd -- -n <cores> --socket-mem <socket_memory> -l <log_level> --adapter <nic> --proc-type <proc_type> ``` 要了解更多关于 `dpdk-testpmd` EAL的命令选项及其作用,请查阅DPDK官方文档或在线教程,因为这些参数和行为可能会随DPDK版本更新而变化。你对哪个特定参数感兴趣?或者想要了解如何配置哪种类型的网络设备?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高晓伟_Steven

相逢即是有缘,动力源于金钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值