DOCA 文档 v2.10.0

DOCA 遥测 PCC

本指南提供了构建和开发应用程序的说明,这些应用程序需要从 NVIDIA® BlueField 和 NVIDIA® ConnectX® 系列网络平台收集遥测数据。

doca_telemetry_pcc 库提供了对算法信息和计数器统计信息的访问,这些信息用于当前安装在 NVIDIA® BlueField 或 ConnectX® 网络平台上的任何可编程拥塞控制 (PCC) 实现。

注意

DOCA 遥测 PCC 在 alpha 级别提供支持。

要使用 DOCA 遥测 PCC,必须满足以下前提条件

  • fwctl 驱动程序已安装并加载(请参阅 NVIDIA MLNX_OFED 文档 v24.07-0.6.1.0 中的说明)

    注意

    要验证 fwctl 驱动程序是否成功加载

    复制
    已复制!
                

    $ ls /sys/class/fwctl/

    预期输出

    复制
    已复制!
                

    fwctl0  fwctl1

    如果目录 /sys/class/fwctl 不存在或为空,请按照以下步骤操作

    1. 搜索 fwctl

      复制
      已复制!
                  

      $ apt search fwctl

      输出可能指示 fwctl-dkmsfwctl-modules

    2. 安装适当的包

      复制
      已复制!
                  

      $ sudo apt install fwctl-dkms

      复制
      已复制!
                  

      $ sudo apt install fwctl-modules

    3. 加载 mlx5_fwctl 模块

      复制
      已复制!
                  

      $ sudo modprobe mlx5_fwctl

    4. 确认模块已加载

      复制
      已复制!
                  

      $ lsmod | grep fwctl

      预期输出

      复制
      已复制!
                  

      mlx5_fwctl 20480 0 fwctl 24576 1 mlx5_fwctl mlx5_core 2211840 2 mlx5_fwctl,mlx5_ib mlx_compat 20480 17 rdma_cm,ib_ipoib,mlxdevm,nvme,mlxfw,mlx5_fwctl,iw_cm,nvme_core,nvme_fabrics,ib_umad,fwctl,ib_core,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm,mlx5_core

  • ConnectX-7 的固件版本 28.43.1000 或 BlueField-3 的固件版本 32.43.1000

基于 DOCA 遥测的应用程序可以运行在主机(ConnectX-7 或 BlueField-3 及更新版本)或 DPU 目标(BlueField-3 及更新版本)上。

DOCA 遥测 PCC 允许从安装在 ConnectX 或 BlueField 设备上并正在积极运行的任何 PCC 镜像中收集信息。

要与设备交互,必须为每个设备创建一个单独的 doca_telemetry_pcc 上下文。设备通常对应于 NIC 上的特定端口。

doca_telemetry_pcc 上下文独立于任何 doca_pcc 上下文运行。这意味着对正在运行的 PCC 镜像的配置更改(例如禁用算法)不会自动反映在遥测上下文中。实现应用程序必须通过直接与 PCC 应用程序交互或扫描所有算法插槽以确定当前活动的插槽来处理这些更改。

假设在 doca_telemetry_pcc 上下文在设备上处于活动状态时,不会安装新的 PCC 镜像。

注意

如果执行完整的 PCC 重新镜像,则必须创建一个新的 doca_telemetry_pcc 上下文。

插槽/算法

在设备的 DPA 子系统上运行的活动 PCC 镜像可以包含多个拥塞控制算法。每个算法都分配给一个特定的“插槽”,在任何给定时间,设备上只有一个插槽/算法处于活动状态。

在不重新镜像 DPA 上的 PCC 算法的情况下,无法修改每个插槽中的算法。虽然 DOCA 遥测 PCC 不提供配置插槽或算法的功能,但它使调用应用程序能够检索有关安装在每个已填充插槽中的算法的信息。

例如

image-2025-1-10_14-52-33-1-version-1-modificationdate-1736520751037-api-v2.png

计数器信息

与插槽类似,如果不重新镜像新的 PCC,则无法修改每个算法的计数器定义。

DOCA 遥测 PCC 允许应用程序检索为应用于特定端口的算法定义的计数器数量。然后可以使用索引值(范围从 0total_counters-1)访问每个计数器的定义。

例如

image-2025-1-10_15-16-50-1-version-1-modificationdate-1736522208030-api-v2.png

状态

在任何给定时间,设备上正在积极运行的拥塞算法由最低的已启用插槽索引确定,因为可以同时将多个插槽标记为已启用。

插槽的启用或禁用可以由外部进程在运行时动态触发,独立于 DOCA 遥测 PCC。自动检测这些更改不属于 doca_telemetry_pcc 上下文的范围。用户有责任定期扫描所有插槽或直接与外部进程交互以监视更改。

除了启用/禁用插槽外,还可以启用或禁用插槽的计数器。在任何给定时间,只有一个插槽可以具有活动计数器。如果计数器在算法插槽上不活动,则任何尝试轮询其值的操作都将导致 DOCA_ERROR_BAD_STATE

可以使用 doca_telemetry_pcc_get_algo_enable_status API 检查插槽及其计数器的状态。

注意

由于 PCC 配置在 DOCA 遥测 PCC 之外进行管理,因此无法保证 API 调用之间的系统条件保持一致。例如,get_algo_enable_status() 可能指示计数器已启用,但如果在调用之间禁用计数器,则后续轮询这些计数器可能会失败。


计数器

可以使用与特定设备关联的 doca_telemetry_pcc 上下文轮询具有启用计数器的插槽的计数器值。

检索计数器值时,API 会将所有可用计数器作为一个块返回,而不是单独返回。计数器以 32 位值数组的形式提供,以及数组中填充的计数器总数。

假设用户熟悉每个计数器索引代表的含义(有关详细信息,请参阅“计数器信息”部分)。

image-2025-1-10_16-10-13-1-version-1-modificationdate-1736525410957-api-v2.png

DOCA 遥测 PCC 提供了另一个 API 函数,如果需要,可以重置计数器。

本节概述了 doca_telemetry_pcc 上下文转换的各种状态、在这些状态之间转换的方法以及每个状态允许的操作。

空闲

上下文已创建并且处于空闲状态。

在此状态下,应用程序应执行以下操作

  • 销毁上下文。

  • 启动上下文以进行处理。

允许的操作

  • 根据“配置”部分配置上下文。

可以通过以下方式达到此状态

上一个状态

转换操作

创建上下文

运行中

调用停止


运行中

在此状态下,应用程序应执行以下操作

  • 停止上下文。

允许的操作

  • 调用停止,将应用程序移动到“空闲”状态

可以通过以下方式达到此状态

上一个状态

转换操作

空闲

成功启动上下文

注意

目前,大多数 API 函数没有状态限制。


DOCA 遥测 PCC 仅支持基于 CPU 的数据路径。

本节介绍了一个基于 doca_telemetry_pcc 库的遥测 PCC 示例。

该示例说明了如何利用 DOCA 遥测 PCC API 初始化和配置 doca_telemetry_pcc 上下文,以及查询和解析 PCC 模式和计数器。

运行示例

  1. 请参阅以下文档

    1. DOCA Linux 安装指南,了解如何安装 BlueField 相关软件的详细信息。

    2. NVIDIA BlueField 平台软件故障排除指南,了解您在安装、编译或执行 DOCA 示例时可能遇到的任何问题。

  2. 构建示例

    复制
    已复制!
                

    cd /opt/mellanox/doca/samples/doca_telemetry/telemetry_pcc meson /tmp/build ninja -C /tmp/build

    二进制文件 doca_telemetry_pcc/tmp/build/ 下创建。

示例用法

复制
已复制!
            

Usage: doca_telemetry_pcc [DOCA Flags] [Program Flags]   DOCA Flags: -h, --help Print a help synopsis -v, --version Print program version information -l, --log-level Set the (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE> --sdk-log-level Set the SDK (numeric) log level for the program <10=DISABLE, 20=CRITICAL, 30=ERROR, 40=WARNING, 50=INFO, 60=DEBUG, 70=TRACE> -j, --json <path> Parse all command flags from an input json file   Program Flags: -p, --pci-addr DOCA device PCI device address

示例包括

  1. 定位和打开 DOCA 设备。

  2. 创建 doca_telemetry_pcc 实例。

  3. 解析所有可能的插槽,打印每个

    1. 算法 ID

    2. 主版本

    3. 次版本

    4. 描述

  4. 确定并显示每个插槽的当前启用状态。

  5. 具有启用计数器的任何插槽的计数器值和描述。

  6. 销毁 doca_telemetry_pcc 上下文。

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