DOCA 文档 v2.10.0

DOCA Flow Tune 工具

DOCA Flow Tune 是一款功能强大的、一站式解决方案,为 DOCA Flow 程序提供可见性和分析能力。

信息

DOCA Flow Tune 在 alpha 级别受支持。

DOCA Flow Tune 是一款一站式解决方案,使开发人员能够可视化其流量 steering 管道,实时监控软件关键绩效指标 (KPI) 以及硬件计数器,并获得有关其基于 DOCA-Flow 的程序的宝贵性能见解。

DOCA Flow Tune 特别适用于以下场景

  • 通过提供管道的可视化,并在稍后提供有关设计的管道的性能见解,来帮助开发人员开发其流量 steering 管道

  • 通过在软件和硬件级别上提供程序性能指标的实时监控,并帮助检测可能的瓶颈/关键路径,从而在部署到生产环境之前解决这些问题,来帮助开发人员在预生产环境中工作

  • 通过提供实时监控以及高速率硬件计数器(用于分析可能的部署/设置问题时),来帮助管理员在生产环境中监控程序

该工具在三种不同的模式下运行,即监控、分析和可视化,以下小节将介绍这些模式。

注意

从分析的基于 DOCA-Flow 的程序中收集、分析和显示信息需要目标程序显式激活 DOCA Flow Tune 服务器。有关更多信息,请参阅 DOCA Flow Tune 服务器编程指南。

监控模式概述

此模式实时收集和显示硬件计数器和软件 KPI(从正在运行的 DOCA Flow 程序和底层设置中提取),从而提供系统性能的全面视图

image-2024-10-7_11-52-45-version-1-modificationdate-1734472193010-api-v2.png

此信息也可以导出到 CSV 文件以进行进一步分析。

信息

有关此模式的更多信息,请参阅“监控模式”部分。

信息

有关在此模式下运行 DOCA Flow Tune 的信息,请参阅“Monitor 命令”部分。


分析模式概述

分析模式支持转储内部 steering 管道状态的功能,以供可视化模式使用。

信息

有关此模式的更多信息,请参阅“分析模式”部分。

信息

有关在此模式下运行 DOCA Flow Tune 的更多信息,请参阅“Analyze 命令”部分。


可视化模式概述

此模式允许用户生成其 steering 管道(使用 DOCA Flow API 构建)的图形表示,使开发人员能够快速了解其程序的管道,并将其与他们预期的架构进行比较。

以下是 DOCA PSP Gateway 参考应用程序的示例

psp_gateway-version-1-modificationdate-1734472194453-api-v2.png

此模式显示查询时程序的管道状态。该图从左到右读取,表示定义的管道中可能的包流。

信息

有关此模式的更多信息,请参阅“可视化模式”部分。

信息

有关在此模式下运行 DOCA Flow Tune 的更多信息,请参阅“Visualize 命令”部分。


DOCA Flow Tune 依赖于以下 DOCA SDK 库

  • DOCA 2.9.0 及更高版本。

  • 为了获得最佳体验,建议遵守所有列出的依赖项的先决条件,尤其是其推荐的固件版本。

要执行 DOCA Flow Tune 工具

复制
已复制!
            

Usage: doca_flow_tune [Program Commands] [DOCA Flags] [Program Flags]   Program Commands: analyze Run Flow Tune in Analyze mode monitor Run Flow Tune in Monitor mode visualize Run Flow Tune in Visualize mode   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

信息

此用法打印输出可以使用 -h(或 --help)选项打印到命令行界面 (CLI)

复制
已复制!
            

doca_flow_tune -h

该工具的每个命令(和子命令)也适用相同的情况。例如

复制
已复制!
            

doca_flow_tune monitor -h

Monitor 命令

monitor 命令显示软件 KPI 和硬件计数器。每个组件都提供各种选项,这些选项可以在 配置文件monitor 部分下指定,也可以通过 CLI 指定。

复制
已复制!
            

Usage: doca_flow_tune monitor [Program Commands] [DOCA Flags] [Program Flags]   Program Commands: background Collect software key performance indicators and hardware counters on the background   DOCA Flags: -h, --help Print a help synopsis -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>   Program Flags: --enable-csv Enable dumping data to CSV file --disable-csv Disable dumping data to CSV file --csv-file-name CSV file name to create --hw-profile Register hardware profile {basic, full} --sw-profile Register software profile -f, --cfg-file JSON configuration file

支持的子命令

  • background – 此子命令允许执行 CSV 转储,而不在屏幕上显示输出。这对于希望记录计数器而不使终端混乱的场景很有用。它还支持使用 --high-rate 标志激活的硬件计数器的高速率转储。

    复制
    已复制!
                

    Usage: doca_flow_tune monitor background [DOCA Flags] [Program Flags]   DOCA Flags: -h, --help Print a help synopsis -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>   Program Flags: --high-rate Enable dumping hardware counters data to CSV file in high rate --hw-profile Register hardware profile {basic, full} --sw-profile Register software profile

CLI 示例

  • 要使用给定的配置文件启动 monitor 命令

    复制
    已复制!
                

    doca_flow_tune monitor -f /tmp/flow_tune_cfg.json

  • 要启动 monitor 命令,同时使用给定的配置文件和 CLI 参数来指定所需的硬件计数器配置文件

    复制
    已复制!
                

    doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --hw-profile basic

  • 要使用 background 子命令启动 monitor 命令,并请求对硬件计数器执行高速率收集和导出

    复制
    已复制!
                

    doca_flow_tune monitor -f /tmp/flow_tune_cfg.json background --high-rate

    注意

    该工具静默创建和更新 flow_tune.csv 文件。

Analyze 命令

analyze 命令在目标 DOCA Flow 程序上运行指定的分析方法集。该分析支持导出 steering 管道的 JSON 描述的功能,如 visualize 命令所用,并且稍后可用于未来的分析方法(在线或离线)。

复制
已复制!
            

Usage: doca_flow_tune analyze export [DOCA Flags] [Program Flags]   DOCA Flags: -h, --help Print a help synopsis -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>   Program Flags: --file-name File name on which the pipeline information will be saved -f, --cfg-file JSON configuration file

支持的子命令

  • export – 此命令允许工具将正在运行的 DOCA Flow 程序的管道导出到 JSON 文件中。此文件是该工具其他功能(例如图形可视化)的主要输入。

    注意

    export 子命令当前是强制性的。

CLI 示例

  • 要在没有配置文件的情况下启动 analyze 命令

    复制
    已复制!
                

    doca_flow_tune analyze export

    JSON 文件存储在其默认路径中。

  • 要使用给定的配置文件启动 analyze 命令,该配置文件指定所有所需配置的期望值

    复制
    已复制!
                

    doca_flow_tune analyze export -f /tmp/flow_tune_cfg.json

  • 要启动 analyze 命令,同时使用配置文件,并通过 CLI 配置导出的 JSON 文件的输出路径

    复制
    已复制!
                

    doca_flow_tune analyze export -f /tmp/flow_tune_cfg.json --file-name my_program_pipeline_desc.json

    导出的管道以 my_program_pipeline_desc.json 形式存储到所选/默认输出目录中。

Visualize 命令

visualize 命令可视化给定 DOCA Flow 程序的 steering 管道。该命令以给定的 JSON 文件作为输入。此文件可以由 analyze export 命令生成,也可以从正在运行的程序动态查询,在这种情况下,该命令将从程序中转储管道,然后生成可视化输出文件。

信息

可视化输出文件是 Mermaid markdown 格式。

信息

此文件可以馈送到任何广泛可用的 Mermaid 可视化工具,如相应的“可视化模式”部分深入解释的那样。

复制
已复制!
            

Usage: doca_flow_tune visualize [DOCA Flags] [Program Flags]   DOCA Flags: -h, --help Print a help synopsis -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>   Program Flags: --pipeline-desc Input JSON file that represents the Flow application pipeline --file-name File name on which the visualization information will be saved -f, --cfg-file JSON configuration file

CLI 示例

  • 在没有配置文件的情况下启动 visualize 命令会导致对正在运行的 DOCA Flow 程序进行管道的实时查询

    复制
    已复制!
                

    doca_flow_tune visualize

  • 使用给定的配置文件启动 visualize 命令,该配置文件指定所有所需配置的期望值

    复制
    已复制!
                

    doca_flow_tune visualize -f /tmp/flow_tune_cfg.json

  • 要使用配置文件启动 visualize 命令,同时通过 CLI 配置 Mermaid 文件的输出路径并提供离线管道文件

    复制
    已复制!
                

    doca_flow_tune visualize -f /tmp/flow_tune_cfg.json --file-name my_program_pipeline_viz.md --pipeline-desc my_program_pipeline_desc.json

    导出的 Mermaid 文件以 my_program_pipeline_viz.md 形式存储到所选/默认输出目录中。由于显式提供了管道描述文件,因此此命令可以离线使用,因为它不需要与 DOCA Flow 程序连接即可进行可视化。

DOCA Flow Tune 有一个配置文件,允许自定义各种设置。

信息

配置文件分为多个部分,以简化其使用。

配置文件默认值

如果未提供配置文件,DOCA Flow Tune 将对必填字段使用其默认值。

信息

所有默认值的列表可以在附录中查看。

在监控模式下,如果不需要软件 KPI 或硬件计数器查询,则从配置文件中删除 hardwaresoftware 字段将禁用相应的功能。

自定义配置文件

用户可以创建自己的文件,并在运行 DOCA Flow Tune (-f/--cfg-file) 时提供文件路径,而不是使用默认配置值。

一旦使用,DOCA Flow Tune 会直接从文件中加载所有提供的值,而其余字段(如果有)将使用各自的默认值。

从 CLI 覆盖配置值

支持通过使用 CLI 中的 --file-name 标志来设置配置文件中的某些字段。如果使用,来自 CLI 的提供值将覆盖配置文件中字段的值。这允许更轻松地配置常用值,而无需创建新的自定义文件或修改现有配置文件。

常用配置值

配置文件的某些部分在 DOCA Flow Tune 的多个运行时模式(即,监控、分析、可视化)之间共享,并且通常与输出/输入文件路径以及与实时 DOCA Flow 程序的交互有关。

flow_tune_cfg.json

复制
已复制!
            

{ ... "outputs_directory": "/tmp/flow_tune/", ... "network": { "server_uds": "/tmp/tune_server.sock", "uds_directory": "/var/run/doca/flow_tune/" }, ... }

输出目录

outputs_directory 定义保存所有输出产品的主目录。此字段没有默认值。如果未提供任何值,DOCA Flow Tune 文件将保存在以下目录中

  • CSV 文件 – /var/log/doca/flow_tune/

  • 分析导出管道描述文件 – /tmp/flow_tune/

  • 管道可视化文件 – /tmp/flow_tune/

连接到 DOCA Flow Tune 服务器

DOCA Flow Tune 的某些功能通过与基于实时 DOCA Flow 的程序交互来工作。这通过作为 DOCA Flow 库一部分在后台运行的服务器启用,并且需要应用以下所有内容

  1. 基于 DOCA Flow 的程序应显式启用服务器。

    信息

    更多信息请参见相关的 DOCA Flow Tune 服务器编程指南。

  2. 基于 DOCA-Flow 的程序应使用启用跟踪的 DOCA Flow 库运行。

    信息

    更多信息请参见 DOCA Flow 编程指南的“调试和跟踪功能”部分。

DOCA Flow Tune 应配置为允许其连接到匹配的服务器。这可以通过修改 配置文件network 部分下的以下变量来完成

  • server_uds – DOCA Tune 服务器 Unix 域套接字 (UDS) 路径。默认值为 /tmp/tune_server.sock

  • uds_directory – 创建所有本地 UDS 的目录。默认值为 /var/run/doca/flow_tune/

硬件计数器

下表提供了支持的硬件计数器及其关联的配置文件。

计数器名称

描述

单位

基本配置文件

完整配置文件

注释

RX 数据包速率

每秒接收的数据包数

pkt/秒

check.svg

check.svg

RX 带宽

基于每秒接收的数据包数的数据传输速率

Gb/秒

check.svg

check.svg

RX 数据包平均大小

接收的数据包的平均大小

字节

check.svg

check.svg

TX 数据包速率

每秒传输的数据包数

pkt/秒

check.svg

check.svg

TX 带宽

基于每秒传输的数据包数的数据传输速率

Gb/秒

check.svg

check.svg

TX 数据包平均大小

传输的数据包的平均大小

字节

check.svg

check.svg

RX SW 丢包

由于关联的 QP/RQ 缺少 WQE 而丢弃的数据包数(不包括 hairpin QP/RQ)

信息

仅在 NVIDIA® ConnectX®-7 及更高版本上受支持。

丢包/秒

check.svg

check.svg

如果观察到丢包,则可能是因为软件无法处理所有接收到的数据包。考虑减少 CPU 处理时间或增加利用的内核和队列的数量。

Hairpin 丢包

由于关联的 hairpin QP/RQ 缺少 WQE 而丢弃的数据包数

信息

仅在 NVIDIA® ConnectX®-7 及更高版本上受支持。

丢包/秒

check.svg

check.svg

如果观察到丢包,则 Tx 数据包处理可能导致瓶颈。考虑简化该过程或调整 hairpin 队列的数量或大小,或实施锁定机制。

RX HW 丢包

由于 RX 缓冲区中没有可用的数据或描述符缓冲区而丢弃的数据包数

丢包/秒

check.svg

check.svg

如果观察到丢包,则 Rx 数据包处理可能导致瓶颈。考虑简化它。

ICM 缓存未命中率

ICM(互连上下文内存)缓存中未命中的数据请求的速率

事件/秒

error.svg

check.svg

每个数据包的 ICM 缓存未命中数

每个数据包的未命中数据请求数

事件/包

error.svg

check.svg

PCIe 入站带宽

每秒从 PCIe 向设备接收的比特数。

Gb/秒

error.svg

check.svg

PCIe 计数器仅在主机端受支持

PCIe 出站带宽

每秒从设备向 PCIe 传输的比特数

Gb/秒

error.svg

check.svg

PCIe 平均读取延迟

所有读取数据的平均 PCIe 读取延迟

纳秒

error.svg

check.svg

PCIe 最大延迟

单个 PCIe 读取来自设备的最大延迟(以纳秒为单位)

纳秒

error.svg

check.svg

PCIe 最小延迟

单个 PCIe 读取来自设备的最小延迟(以纳秒为单位)

纳秒

error.svg

check.svg


软件关键绩效指标

下表提供了支持的软件 KPI 及其关联的配置文件。

关键绩效指标

描述

单位

配置文件

插入速率

每秒每个队列成功的表条目插入操作数。

操作/秒

entries_ops_rates

删除速率

每秒每个队列成功的表条目删除操作数。

操作/秒

entries_ops_rates


配置

CSV 格式

CSV 格式存储两种类型的行,特定于每个计数器模块

  • 硬件计数器行(模块 ID=0)

    模块 ID

    硬件计数器 ID

    计数器值

    时间戳

    0

    1

    8

    142623139459

    0

    2

    197503959728

    142623139459

    • 模块 ID – 硬件模块标识符

    • 硬件计数器 ID – 硬件计数器的唯一标识符

    • 计数器值 – 计数器值

    • 时间戳 – 硬件时间戳

      硬件计数器 ID 映射

硬件计数器 ID

描述

单位

0

端口 0 上的 RX 数据包数

数据包

1

端口 1 上的 RX 数据包数

数据包

2

端口 0 上的 RX 字节数

字节

3

端口 1 上的 RX 字节数

字节

4

端口 0 上的 RX 数据包速率

每秒数据包数

5

端口 1 上的 RX 数据包速率

每秒数据包数

6

端口 0 上的 RX 带宽

Gb/秒

7

端口 1 上的 RX 带宽

Gb/秒

8

端口 0 上的平均 RX 数据包大小

字节

9

端口 1 上的平均 RX 数据包大小

字节

10

端口 0 上的 TX 数据包数

数据包

11

端口 1 上的 TX 数据包数

数据包

12

端口 0 上的 TX 字节数

字节

13

端口 1 上的 TX 字节数

字节

14

端口 0 上的 TX 数据包速率

每秒数据包数

15

端口 1 上的 TX 数据包速率

每秒数据包数

16

端口 0 上的 TX 带宽

Gb/秒

17

端口 1 上的 TX 带宽

Gb/秒

18

端口 0 上的平均 TX 数据包大小

字节

19

端口 1 上的平均 TX 数据包大小

字节

20

ICMC 未命中数

事件

21

ICMC 未命中率

每秒事件数

22

每个数据包的 ICMC 未命中数

每个数据包的事件数

23

从 PCIe 向设备接收的字节带宽

Gb/秒

24

从设备向 PCIe 传输的字节带宽

Gb/秒

25

平均 PCIe 读取延迟

纳秒

26

来自设备的所有 PCIe 读取的总延迟

纳秒

27

PCIe 数据包总数

事件

28

单个 PCIe 读取来自设备的最大延迟

纳秒

29

单个 PCIe 读取来自设备的最小延迟

纳秒

30

RX 软件丢包

每秒丢包数

31

Hairpin 丢包

每秒丢包数

32

RX 硬件丢包

每秒丢包数

  • 软件 KPI 行(模块 ID=1)

    模块 ID

    端口 ID

    SW 计数器类型

    计数器值

    时间戳

    1

    0

    队列 0 插入速率

    34511

    1727345744137828

    1

    1

    队列 0 插入速率

    37050

    1727345755137828

    • 模块 ID – 软件模块标识符

    • 端口 ID – 软件端口 ID

    • SW KPI 类型 – KPI 类型

    • KPI 值 – KPI 值

    • 时间戳 – 软件时间戳

配置文件

DOCA Flow Tune 的配置文件包含两个与监控模式相关的主要部分

  • csv 转储对象

  • monitor 配置对象

以下是这两个部分的示例

flow_tune_cfg.json

复制
已复制!
            

{ ... "csv": { "enable": false, "file_name": "flow_tune.csv", "max_size_bytes": 1000000, "max_files": 1 },   ...   "monitor": { "screen_mode": "dark", // modes: {light, dark} "hardware": { "pci_addresses": [ "b1:00.0", "b1:00.1" ], "profile": "full" // profiles: {basic, full} }, "software": [ { "flow_port_id": 0, "profiles": [ "entries_ops_rates" // profiles: {entries_ops_rates} ] }, { "flow_port_id": 1, "profiles": [ "entries_ops_rates" ] } ] } ... }

CSV 配置部分

CSV 转储允许将工具收集的硬件和软件计数器导出到 CSV 文件中,以进行进一步分析或记录保存。这对于随时间推移记录性能指标特别有用。

如何启用 CSV 转储

要启用 CSV 转储,请按如下方式修改 JSON 文件中的配置

复制
已复制!
            

{ "csv": { "enable": true, "file_name": "flow_tune.csv", "max_size_bytes": 1000000, "max_files": 1 } }

支持的字段为

  • enable – 设置为 true 以启用 CSV 转储,或设置为 false 以禁用它。默认值为 false

  • file_name – 将在其中保存 CSV 文件的名称。

  • max_size_bytes – CSV 文件的最大大小(以字节为单位)。一旦达到此限制,将根据 max_files 设置创建一个新文件。

  • max_files – 要保留的最大 CSV 文件数。达到此限制后,将删除最旧的文件。

也可以分别使用 CLI 中的 --enable-csv--disable-csv 标志启用或禁用 CSV 转储。例如

复制
已复制!
            

doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --enable-csv

此外,可以使用 --csv-file-name 标志更新 CSV 文件名,例如

复制
已复制!
            

doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --csv-file-name "counters_dump.csv"

监控配置部分

屏幕模式

监控模块支持两种屏幕模式:darklight

硬件

hardware 部分包括 pci_addressesprofile 字段

  • pci_addresses 字段期望 NIC 端口的 PCIe 地址数组。该工具使用这些地址来检索相应的 NIC 设备和所需的端口 ID。

    注意

    PCIe 地址必须属于同一设备。

    信息

    该工具每个设备最多支持两个端口。

  • profile 字段期望接收 basicfull 配置文件。

    • basic 配置文件 – 包括与数据包和端口相关的计数器(即,带宽、每秒数据包数、平均数据包大小、数据包丢弃数)

    • full 配置文件 – 包括所有 basic 计数器,并添加额外的调试计数器(例如,ICMC 和 PCIe 计数器)

      信息

      有关计数器的更多信息,请参阅“硬件计数器”部分。

可以通过添加 --hw-profile 从 CLI 设置硬件计数器配置文件。例如

复制
已复制!
            

doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --hw-profile basic


软件

software 部分包括 flow_port_idprofiles 字段

  • flow_port_id 字段 – 期望单个 DOCA Flow 端口标识号。Flow 端口 ID 应由 DOCA Flow 程序通过调用 doca_flow_port_cfg_set_devargs() API 调用以及正确的端口 ID 字符串来设置。

  • profiles 字段 – 期望接收一个或多个支持的配置文件。

    • entries_ops_rates 配置文件 – 包括插入和删除速率 KPI

      信息

      目前,这是唯一受支持的配置文件。

可以通过添加 --sw-profile 从 CLI 设置软件 KPI 配置文件,例如

复制
已复制!
            

doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --sw-profile entries_ops_rates

分析模式收集(并在稍后分析)信息,以帮助用户更好地理解和调试其基于 DOCA-Flow 的程序。

管道导出

此工具以专有的 JSON 格式导出基于 DOCA-Flow 的程序的内部状态。这使该工具能够提供有关给定程序的离线信息,这些信息稍后可以进行分析。一个这样的例子是可视化目标程序的管道的能力,而无需让该程序在真实硬件上运行。

虽然管道导出操作旨在编码所有相关信息以供将来分析,但格式本身是专有的,仅供其他 DOCA 工具使用。

查看管道

使用 visualize 命令运行 DOCA Flow Tune 工具后,将生成一个输出 Mermaid 文件。该文件的内容是 markdown 标记语言(称为“Mermaid”格式)的原始格式。这是用于可视化目的的广泛支持的行业标准。 Mermaid 格式的在线图形编辑器的一个示例是 Mermaid Live 网站。

注意

复制 Mermaid 文件的内容并将其粘贴到在线编辑器中,以便能够查看程序的visualization 管道。


解读可视化

如下例所示,可视化图中存在三个“子图”(灰色背景)

psp_gateway-version-1-modificationdate-1727347900950-api-v2.png

输入图

  • 这是最左边的子图

  • 此部分中的节点表示数据包流的可能开始(即,特定端口标识符)

  • 图中的下一个跃点是 DOCA Flow 根管道,如管道图所示

管道图

  • 这是中间子图

  • 子图包含目标程序定义的所有管道

    • 节点表示 DOCA Flow 管道 – 每个节点显示程序定义的(使用 DOCA Flow API 术语)相关管道的属性。例如,属性包括管道名称、管道类型、匹配项等。

    • 图中的下一个跃点可以是另一个管道或终止操作。终止操作可以是丢弃、RSS、转发到端口或程序定义的任何其他终止数据包流的操作。

    • 控制管道链接 – 该图示显示了从控制管道发出的链接,指示用于绘制此链接的条目匹配项,包括其他相关信息

    • 非控制管道链接:

      • 对于非控制管道,匹配项存在于节点级别,因为所有条目共享相同的匹配项

      • 不同的链接表示采取的不同操作(例如,不同的 forward-pipe 属性)

输出图

  • 这是最右边的子图

  • 此子图包含端口和交换机管理器节点

  • 到达此层的链接表示数据包进入线路(对于端口)或软件(对于交换机管理器)

Telemetry fwctl 驱动程序未加载

错误

在监控模式下运行 DOCA Flow Tune 时,启动时会遇到以下日志消息

复制
已复制!
            

[DOCA][WRN][priv_doca_telemetry_fwctl.cpp:121][priv_doca_telemetry_fwctl_find_device_by_pci] Failed finding fwctl device: Opening directory /sys/class/fwctl/ failed. Make sure you have the fwctl driver loaded [DOCA][ERR][priv_doca_telemetry_fwctl.cpp:201][priv_doca_telemetry_fwctl_open_by_devinfo] devinfo 0x55c572286520: Failed to open fwctl device: Failed to find matching fwctl device


解决方案

DOCA Telemetry SDK 使用 fwctl 驱动程序来查询硬件计数器,因此必须安装并加载它。

步骤 1:验证驱动程序安装

首先,检查驱动程序是否已安装,如下所示

  • Debian/Ubuntu

    复制
    已复制!
                

    $ sudo apt list --installed | grep fwctl

  • RHEL

    复制
    已复制!
                

    $ sudo yum list installed | grep fwctl

如果未安装驱动程序,请运行以下命令安装它

  • Debian/Ubuntu

    复制
    已复制!
                

    $ sudo apt search fwctl >> <fwctl-package-name>/....   $ sudo apt install -y <fwctl-package-name>

  • RHEL

    复制
    已复制!
                

    $ sudo yum search fwctl >> <fwctl-package-name>/....   $ apt/yum install -y <fwctl-package-name>

步骤 2:检查驱动程序是否已加载

安装驱动程序后,验证它是否已加载,方法是执行

复制
已复制!
            

$ sudo lsmod | grep fwctl

您应该看到类似于以下的输出

复制
已复制!
            

> mlx5_fwctl 20480 0 > fwctl 16384 1 mlx5_fwctl > mlx5_core 2134016 2 mlx5_fwctl,mlx5_ib > mlx_compat 69632 14 rdma_cm,ib_ipoib,mlxdevm,mlxfw,mlx5_fwctl,iw_cm,ib_umad,fwctl,ib_core,rdma_ucm,ib_uverbs,mlx5_ib,ib_cm,mlx5_core

如果驱动程序未加载,请通过运行以下命令加载它

复制
已复制!
            

$ sudo modprobe mlx5_fwctl

Visual Studio Code 中的 Mermaid 可视化

Visual Studio Code 提供了用于查看 Mermaid markdown 格式的扩展,这些扩展可用于查看来自 DOCA Flow Tune 工具的 Mermaid 输出。

但是,为了使这些扩展工作,应该使用 Mermaid 打开和关闭行修改 Mermaid 文件,如下所示

复制
已复制!
            

```mermaid <original_mermaid_file_content> ```


功能集有限 – 无法检测到正在运行的 DOCA Flow 程序

错误

运行 DOCA Flow Tune 时,启动时会遇到以下日志消息,随后某些功能无法工作/加载

复制
已复制!
            

[DOCA][WRN][flow_tune.cpp:195][get_flow_app_data] Could not detect a running DOCA Flow program, some features will be impacted


解决方案

DOCA Flow Tune 的某些功能通过与基于实时 DOCA-Flow 的程序交互来工作。这通过作为 DOCA Flow 库一部分在后台运行的服务器启用,并且需要应用以下所有内容

  • 基于 DOCA-Flow 的程序应显式启用服务器。更多信息请参见 DOCA Flow Tune 服务器编程指南。

  • 基于 DOCA-Flow 的程序应使用“启用跟踪”的 DOCA Flow 库运行。更多信息请参见 DOCA Flow 编程指南的“调试和跟踪功能”部分。

flow_tune_cfg.json

复制
已复制!
            

{ "outputs_directory": "/tmp/flow_tune/", "network": { "server_uds": "/tmp/tune_server.sock", "uds_directory": "/var/run/doca/flow_tune/" }, "csv": { "enable": false, "file_name": "flow_tune.csv", "max_size_bytes": 1000000000, "max_files": 1 }, "analyze": { "file_name": "flow_tune_pipeline_desc.json" }, "visualize": { "pipeline_desc_file": "/tmp/flow_tune_pipeline_desc.json", // Non-mandatory field "file_name": "flow_tune_pipeline_vis.md" }, "monitor": { "screen_mode": "light", "hardware": { "pci_addresses": [ "08:00.0", "08:00.1" ], "profile": "full" }, "software": [ { "flow_port_id": 0, "profiles": [ "entries_ops_rates" ] }, { "flow_port_id": 1, "profiles": [ "entries_ops_rates" ] } ] } }

其中

  • outputs_directory – 保存所有输出产品的主目录。此字段没有默认值。如果未提供任何值,DOCA Flow Tune 文件将保存在以下目录中

    • CSV 文件 – /var/log/doca/flow_tune/

    • 分析导出管道描述文件 – /tmp/flow_tune/

    • 管道可视化文件 – /tmp/flow_tune/

  • network

    • server_uds – DOCA Tune 服务器 Unix 域套接字 (UDS) 路径。默认值为 /tmp/tune_server.sock

    • uds_directory – 创建所有本地 UDS 的目录。默认值为 /var/run/doca/flow_tune/

  • csv

    • enable – 如果应将信息保存到 CSV 文件中,则为 true。默认值为 false

    • file_name – CSV 文件名。默认值为 flow_tune.csv

    • max_size_bytes – CSV 文件最大大小(字节)。当达到限制时,将创建新文件。默认值为 1Gb

    • max_files – 要创建的最大 CSV 文件数。默认值为 1

  • 分析

    • file_name – Flow 程序管道描述文件名。文件在 outputs_directory 路径下创建。默认值为 flow_tune_pipeline_desc.json

  • 可视化

    • pipeline_desc_file – Flow 程序管道描述输入文件路径。此文件是 analyze export 命令的产物。

    • file_name – Flow 程序管道可视化文件名。文件在 outputs_directory 路径下创建。默认值为 flow_tune_pipeline_vis.md

  • 监控

    • screen_mode – 要使用的监控命令主题。默认值为 light

    • 硬件

      • pci_addresses – DOCA Flow Tune 应检查的 PCIe 地址列表。

      • profile – 用于每个给定 PCIe 地址的硬件配置文件。默认值为 full

    • 软件

      • flow_port_id – DOCA Flow Tune 应检查的 Flow 程序端口标识号。

      • profiles – 用于给定特定端口标识号的软件配置文件列表。默认值为 [entries_ops_rates]

© 版权所有 2025,NVIDIA。 上次更新于 2025 年 2 月 12 日。