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 程序和底层设置中提取),从而提供系统性能的全面视图

此信息也可以导出到 CSV 文件以进行进一步分析。
有关此模式的更多信息,请参阅“监控模式”部分。
有关在此模式下运行 DOCA Flow Tune 的信息,请参阅“Monitor 命令”部分。
分析模式概述
分析模式支持转储内部 steering 管道状态的功能,以供可视化模式使用。
有关此模式的更多信息,请参阅“分析模式”部分。
有关在此模式下运行 DOCA Flow Tune 的更多信息,请参阅“Analyze 命令”部分。
可视化模式概述
此模式允许用户生成其 steering 管道(使用 DOCA Flow API 构建)的图形表示,使开发人员能够快速了解其程序的管道,并将其与他们预期的架构进行比较。
以下是 DOCA PSP Gateway 参考应用程序的示例

此模式显示查询时程序的管道状态。该图从左到右读取,表示定义的管道中可能的包流。
有关此模式的更多信息,请参阅“可视化模式”部分。
有关在此模式下运行 DOCA Flow Tune 的更多信息,请参阅“Visualize 命令”部分。
DOCA Flow Tune 依赖于以下 DOCA SDK 库
要执行 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 levelfor
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 或硬件计数器查询,则从配置文件中删除 hardware
或 software
字段将禁用相应的功能。
自定义配置文件
用户可以创建自己的文件,并在运行 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 库一部分在后台运行的服务器启用,并且需要应用以下所有内容
基于 DOCA Flow 的程序应显式启用服务器。
信息更多信息请参见相关的 DOCA Flow Tune 服务器编程指南。
基于 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/秒 |
|
| |
RX 带宽 | 基于每秒接收的数据包数的数据传输速率 | Gb/秒 |
|
| |
RX 数据包平均大小 | 接收的数据包的平均大小 | 字节 |
|
| |
TX 数据包速率 | 每秒传输的数据包数 | pkt/秒 |
|
| |
TX 带宽 | 基于每秒传输的数据包数的数据传输速率 | Gb/秒 |
|
| |
TX 数据包平均大小 | 传输的数据包的平均大小 | 字节 |
|
| |
RX SW 丢包 | 由于关联的 QP/RQ 缺少 WQE 而丢弃的数据包数(不包括 hairpin QP/RQ) 信息
仅在 NVIDIA® ConnectX®-7 及更高版本上受支持。 | 丢包/秒 |
|
| 如果观察到丢包,则可能是因为软件无法处理所有接收到的数据包。考虑减少 CPU 处理时间或增加利用的内核和队列的数量。 |
Hairpin 丢包 | 由于关联的 hairpin QP/RQ 缺少 WQE 而丢弃的数据包数 信息
仅在 NVIDIA® ConnectX®-7 及更高版本上受支持。 | 丢包/秒 |
|
| 如果观察到丢包,则 Tx 数据包处理可能导致瓶颈。考虑简化该过程或调整 hairpin 队列的数量或大小,或实施锁定机制。 |
RX HW 丢包 | 由于 RX 缓冲区中没有可用的数据或描述符缓冲区而丢弃的数据包数 | 丢包/秒 |
|
| 如果观察到丢包,则 Rx 数据包处理可能导致瓶颈。考虑简化它。 |
ICM 缓存未命中率 | ICM(互连上下文内存)缓存中未命中的数据请求的速率 | 事件/秒 |
|
| |
每个数据包的 ICM 缓存未命中数 | 每个数据包的未命中数据请求数 | 事件/包 |
|
| |
PCIe 入站带宽 | 每秒从 PCIe 向设备接收的比特数。 | Gb/秒 |
|
| PCIe 计数器仅在主机端受支持 |
PCIe 出站带宽 | 每秒从设备向 PCIe 传输的比特数 | Gb/秒 |
|
| |
PCIe 平均读取延迟 | 所有读取数据的平均 PCIe 读取延迟 | 纳秒 |
|
| |
PCIe 最大延迟 | 单个 PCIe 读取来自设备的最大延迟(以纳秒为单位) | 纳秒 |
|
| |
PCIe 最小延迟 | 单个 PCIe 读取来自设备的最小延迟(以纳秒为单位) | 纳秒 |
|
|
软件关键绩效指标
下表提供了支持的软件 KPI 及其关联的配置文件。
关键绩效指标 | 描述 | 单位 | 配置文件 |
插入速率 | 每秒每个队列成功的表条目插入操作数。 | 操作/秒 |
|
删除速率 | 每秒每个队列成功的表条目删除操作数。 | 操作/秒 |
|
配置
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"
监控配置部分
屏幕模式
监控模块支持两种屏幕模式:dark
和 light
。
硬件
hardware
部分包括 pci_addresses
和 profile
字段
pci_addresses
字段期望 NIC 端口的 PCIe 地址数组。该工具使用这些地址来检索相应的 NIC 设备和所需的端口 ID。注意PCIe 地址必须属于同一设备。
信息该工具每个设备最多支持两个端口。
profile
字段期望接收basic
或full
配置文件。basic
配置文件 – 包括与数据包和端口相关的计数器(即,带宽、每秒数据包数、平均数据包大小、数据包丢弃数)full
配置文件 – 包括所有basic
计数器,并添加额外的调试计数器(例如,ICMC 和 PCIe 计数器)信息有关计数器的更多信息,请参阅“硬件计数器”部分。
可以通过添加 --hw-profile
从 CLI 设置硬件计数器配置文件。例如
doca_flow_tune monitor -f /tmp/flow_tune_cfg.json --hw-profile basic
软件
software
部分包括 flow_port_id
和 profiles
字段
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 管道。
解读可视化
如下例所示,可视化图中存在三个“子图”(灰色背景)

输入图
这是最左边的子图
此部分中的节点表示数据包流的可能开始(即,特定端口标识符)
图中的下一个跃点是 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]
。