DOCA 文档 v2.10.0

DOCA DPA 执行单元管理工具

本文档介绍 DPA 执行单元 (EU) 管理工具 dpaeumgmt

注意

未来版本将支持执行单元分区。

下表介绍理解本文档的重要术语

术语

定义

DPA

数据路径加速器;一种旨在加速数据路径操作的辅助处理器。

DPA 分区管理器

能够控制整个系统 EU 的 PCIe 设备功能。在 NVIDIA® BlueField®-3 上,它是 ECPF。DPA 分区管理器默认与默认分区关联。

EU

硬件执行单元;一种逻辑 DPA 处理单元。

EU 组

可以使用 dpaeumgmt 创建的 EU 的集合/子集。EU 组在 EU 分区下创建,并且只能从该分区下的 EU 池中形成。

EU 对象

EU 分区或 EU 组。

EU 分区

可以使用 dpaeumgmt 创建的隔离 EU 池。

只有当分区被创建并与其他 vHCA 关联时,它们才能使用硬件资源并执行 DPA 软件线程。

EU 亲和性

DPA 线程与 DPA EU 配对的方法。DPA 支持三种类型的亲和性

  • none – 从所有可用 EU 池中选择一个 EU

  • strict – 仅选择指定的 EU(按 ID)

  • group – 从指定组中的所有 EU 中选择一个 EU

DPA EU 管理工具可以在主机或目标 DPU 上运行,并允许用户管理 DPA 的 EU,EU 是 DPA 的基本资源。该工具支持 EU 的资源控制,以在使用 DOCA FlexIO SDK API 之前优化 DPA 的计算资源使用率。

如果没有 EU 分配,DPA 软件线程将无法访问硬件管道/CPU 时间资源,因此无法执行。

dpaeumgmt 主要用于以下用途

  • 在 DPA EU 上使用 strict 亲和性运行 DPA 软件线程(即,仅使用特定的预选 EU 运行 DPA 线程)。为此,dpaeumgmt 提供了一个选项来查询允许使用的最大 EU ID。

  • 允许 DPA 软件线程从 EU 组中的 DPA EU 上运行

    • 一旦创建 EU 组,就会为其分配 EU 的子集。

    • dpaeumgmt 提供一个 ID 给创建的组,该 ID 可用于使用 group 亲和性运行 DPA 应用程序,其中亲和性 ID 将与该组的 ID 相同。

  • EU 分区管理 - 管理 EU 分区的功能。

当软件堆栈希望使用 group 亲和性类型运行 DPA 线程时,将使用该组集合中可用的 EU 之一进行执行。

注意

只有当有可用的 EU 时,DPA 线程才可以执行。

启动时,会自动创建一个默认 EU 分区。默认 EU 分区拥有所有系统的 EU。DPA 分区管理器功能是唯一属于它的功能,因此可以控制系统的所有资源。

当使用 none 亲和性运行 DPA 线程时,为 DPA 线程选择运行的 EU 来自分区的 EU 池。即,来自仅属于 DPA 设备当前分区且未分配给任何 EU 组(在当前分区上)的 EU。如果上述 EU 组(即,分区的默认 EU 组)为空,则 DPA 线程将无法使用 none 亲和性运行。

dpaeumgmt 允许用户创建、销毁和查询 EU 对象。

注意

dpaeumgmt 工具必须以 root 权限运行,并且用户必须在使用它之前执行 sudo mst start

顶层 dpaeumgmt 命令语法

复制
已复制!
            

Usage: dpaeumgmt {help|version|eu_group|partition}   Type "./dpaeumgmt help" for detailed help

通用命令

  • 打印工具的基本用法信息

    复制
    已复制!
                

    dpaeumgmt -h

  • 打印工具命令的详细帮助菜单

    复制
    已复制!
                

    dpaeumgmt help

  • 打印版本信息

    复制
    已复制!
                

    dpaeumgmt version

执行单元组命令

以下小节中列出的命令用于配置 EU 组。

EU 组命令标志和参数

下表列出了与 eu_group 命令相关的标志。标志的参数必须在引号内使用(如果超过一个),并且没有额外的空格。

短选项

长选项

描述

-h

--help

打印基本工具用法信息。

-d

--dpa_device

设备接口名称 (MST/PCI/RDMA/NET)。

-r

--range_eus

为 EU 组或分区分配的 EU 范围。参数必须在引号内提供。

-g

--id_group

组 ID 号。

此数字必须为正数,且小于或等于 max_num_dpa_eu_group 参数,该参数可以使用命令 eu_group info -d <device> 检索。

-n

--name_group

组名称;15 个字符的字符串。参数必须在引号内提供。

-f

--file_groups

完整路径或仅文件名(如果它与可执行文件目录(dpaeumgmt 所在的位置)位于同一目录中)。


EU 组信息

打印有关 EU 组相关 DPA 资源的信息

复制
已复制!
            

dpaeumgmt eu_group info --dpa_device <device>

示例

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group info -d mlx5_0 Max number of DPA EU groups: 15 Max number of DPA EUs in one DPA EU group: 190 Max DPA EU number available to use: 190 Max EU group name length is 15 chars


创建 EU 组

在提供的设备的分区上创建具有指定名称的 EU 组。范围指示的 EU 取自分区的 DPA 设备 EU 分区。

复制
已复制!
            

dpaeumgmt eu_group create --dpa_device <device> --name_group <name> --range_eus <range>

示例

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group create -d mlx5_0 -n "HG hello world1" -r "6-8,16,55,70" Group created successfully- EU group ID: 1 EU group name: HG hello world Member EUs are: 6-8,16,55,70

注意

成功创建 EU 组后,用户可以使用 group 亲和性运行 DPA 线程,并将亲和性类型设置为组的 ID。


销毁 EU 组

销毁设备分区上存在的 EU 组,可以使用提供的组名称或 ID。

复制
已复制!
            

dpaeumgmt eu_group destroy --dpa_device <device> [--name_group <name> | --id_group <id>]

示例

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group destroy -d mlx5_0 -g 1 Group with group id: 1, was destroyed successfully


查询 EU 组

查询驻留在提供的设备分区上的 EU 组。如果使用可选参数之一,则命令仅查询特定组并在其存在时打印它

复制
已复制!
            

dpaeumgmt eu_group query --dpa_device <device> [--name_group <name> | --id_group <id>]

示例

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group query -d mlx5_0 1) EU group ID: 1 EU group name: HG hello world Member EUs are: 6-8,16,55,70   In total there are 1 EU groups configured.

更多选项

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group query -d mlx5_0 -n "HG hello world" $ sudo ./dpaeumgmt eu_group query -d mlx5_0 -g 1


应用 EU 组

应用文件中提供的设备分区上的 EU 组

复制
已复制!
            

dpaeumgmt eu_group apply --dpa_device <device> --file_groups <file>

文件格式示例

复制
已复制!
            

{ "eu_groups": [ { "name": "hg1", "range": "178-180"}, { "name": "hg2", "range": "2-10"} ] }

注意

该命令删除 DPA 设备所属 EU 分区上定义的所有先前 EU 组,并应用文件中的组。

示例

复制
已复制!
            

$ sudo ./dpaeumgmt eu_group apply -d mlx5_0 --file_groups example.json 1) EU group ID: 1 EU group name: hg1 Member EUs are: 178-180   1) EU group ID: 2 EU group name: hg2 Member EUs are: 2-10   In total there are 2 EU groups configured.

EU 分区命令

以下小节中列出的命令用于配置 EU 分区。

EU 分区命令标志和参数

下表列出了与 EU partition 命令相关的标志。标志的参数必须在引号内使用(如果超过一个),并且没有额外的空格。

短选项

长选项

描述

-h

--help

打印基本工具用法信息。

-d

--dpa_device

设备接口名称 (MST/PCI/RDMA/NET)。

-r

--range_eus

为 EU 组或分区分配的 EU 范围。参数必须在引号内提供。

-p

--id_partition

分区 ID 号。

此数字必须为正数,且小于或等于 max_num_dpa_eu_partition 的值,该值可以使用命令 partition info -d <device> 检索。

-v

--vhca_list

要与分区关联的 vHCA ID。参数必须在引号内提供。

-m

--max_num_eu_group

在创建分区时为分区保留的 EU 组数。


EU 分区信息

打印 EU 分区的相关 DPA 资源

复制
已复制!
            

dpaeumgmt partition info --dpa_device <device>

示例

复制
已复制!
            

$ sudo ./dpaeumgmt partition info -d mlx5_0 Max number of DPA EU partitions: 15 Max number of VHCAs associated with a single partition: 32 Max number of DPA EU groups: 15 Note- an allocation of a partition consumes from the number of DPA EU *groups* available to create Max DPA EU number available to use: 190


创建 EU 分区

在 DPA 设备上创建 EU 分区

复制
已复制!
            

dpaeumgmt partition create --dpa_device <device> --vhca_list <id_list> --range_eus <range> --max_num_eu_group <max_num>

示例

复制
已复制!
            

$ sudo ./dpaeumgmt partition create -d mlx5_0 -v 1 -r 10-20 -m 2 Partition created successfully- EU Partition ID: 1 Maximal number of groups: 2 The partition has a total of 1 associated VHCA IDs, namely: 1 Partition's member EUs are: 10-20


销毁 EU 分区

销毁设备分区上存在的 EU 分区

复制
已复制!
            

dpaeumgmt partition destroy --dpa_device <device> --id_partition <id>

示例

复制
已复制!
            

$ sudo ./dpaeumgmt partition destroy -d mlx5_0 -p 1 Partition with partition id: 1, was destroyed successfully


查询 EU 分区

查询驻留在提供的设备分区上的 EU 分区,并在分区存在时打印出来

复制
已复制!
            

dpaeumgmt partition query --dpa_device <device> [--id_partition <id>]

示例

复制
已复制!
            

$ sudo ./dpaeumgmt partition query -d mlx5_0 -p 1 EU Partition ID: 1 Maximal number of groups: 2 The partition has a total of 1 associated VHCA IDs, namely: 1 Partition's member EUs are: 10-20

更多选项

复制
已复制!
            

$ sudo ./dpaeumgmt partition query -d mlx5_0

下图说明了 vHCA 对分区的所有权和控制权,以及哪些 vHCA 对分区拥有声明权(即可以使用)。

partition-control-diagram-version-1-modificationdate-1736842591277-api-v2.png

  • dpaeumgmt 应该在创建 DPA 进程之前运行,以便提前配置所有资源

    • 在具有现有 DPA 进程的设备上运行该工具会导致失败

  • 用户分配的 EU 组名称对于特定分区上的每个 EU 组都必须是唯一的,否则 EU 组创建命令将失败

  • 创建 EU 分区会消耗 vHCA 分区上允许的 EU 组数量

    • 分区本身占 1 个组,因为每个分区都创建了一个默认组

    • <max_num> 个组,这是用户在创建分区时提供的输入

  • 在 ECPF 以外的接口上创建组或运行 DPA 线程(使用任何亲和性)通常需要在特定 vHCA 上配置有效的分区

  • 只有默认分区暴露给真实的 EU 编号,用户创建的所有其他分区都使用虚拟 EU

    • 例如,如果用户创建了一个 EU 范围为 20-40 的分区,则从其虚拟 HCA (vHCA) 之一查询分区信息将显示 0-20 的 EU。因此,本例中真实编号为 39 的 EU 将对应于虚拟 EU 编号 19。

  • 非默认分区上的组 ID 是虚拟的。

    • 不同的分区可以具有完全不同的组,即使它们具有相同的 ID。

    • 在 FlexIO API 上指定的亲和性 ID 参数可以根据应用程序运行的 vHCA 区分组。

  • EU 分区上不允许 vHCA ID 重叠

  • 无法使用 dpaeumgmt 查询 vHCA ID,这些 ID 假定用户事先已知

  • 如果该分区上存在 EU 对象,则分区销毁将失败

  • 无法知道选择了哪个 EU 来运行

  • 每个 vHCA 都将其所属的分区及其资源视为整个世界。它只看到

    • 它创建的组和分区

    • 分配给它的 EU 数量

    • 它所属分区的 max_num_eu_group

  • 不保证在组创建时给出的 EU 组 ID

  • 默认组(每个分区的)不能由用户管理

  • 可用的 EU 编号介于 0 和最大 DPA EU 编号(减 1)之间(上限可以使用上面指定的 info 命令查询)

  • dpaeumgmt 不支持虚拟功能 (VF)

  • 无法在 DPA 分区管理器功能以外的其他 vHCA 上创建分区

  • 最多有 16 个硬件 EU 组实体

© 版权所有 2025 NVIDIA。 上次更新时间:2025 年 2 月 12 日。