DOCA 文件压缩应用指南
本文档提供了基于 NVIDIA® BlueField® DPU 的文件压缩实现。
文件压缩应用程序展示了如何使用 DOCA Compress API 通过硬件加速压缩和解压缩数据,以及如何使用 DOCA Comch API 发送和接收数据。
该应用程序的逻辑包括客户端和服务器。
客户端 - 应用程序打开文件,压缩文件,并将源文件的校验和与压缩数据一起发送到服务器。
服务器端 - 应用程序将接收到的文件保存在缓冲区中,解压缩文件,并将接收到的校验和与计算出的校验和进行比较。
文件压缩应用程序客户端在主机上运行,服务器在 DPU 上运行。

文件压缩应用程序基于 DOCA Comm Channel API 运行,以从主机向 DPU 发送和接收文件。

连接在客户端和服务器端均通过 DOCA Comm Channel API 建立。
客户端压缩数据。
当压缩引擎可用时 - 使用 DOCA Compress API 提交压缩作业,并将结果发送到服务器。
当压缩引擎不可用时 - 在软件中压缩数据。
客户端发送发送压缩文件内容所需的消息数量。
客户端发送大小不超过 4080 字节的数据段。
服务器将接收到的数据保存在缓冲区中,并提交解压缩作业。
当成功接收到文件的所有部分后,服务器向客户端发送 ACK 消息。
服务器将接收到的校验和与计算出的校验和进行比较。
服务器将解压缩后的数据写入输出文件。
有关如何安装 BlueField 相关软件的详细信息,请参阅《DOCA Linux 安装指南》。
DOCA 参考应用程序的安装包包含应用程序的源代码以及匹配的编译说明。这允许“按原样”编译应用程序,并提供修改源代码,然后编译应用程序新版本的能力。
有关应用程序以及开发和编译技巧的更多信息,请参阅 DOCA 参考应用程序 页面。
应用程序的源代码可以在应用程序的目录下找到:/opt/mellanox/doca/applications/file_compression/
。
编译所有应用程序
所有 DOCA 应用程序都在一个 meson 项目下定义。因此,默认情况下,编译包括所有应用程序。
要一起构建所有应用程序,请运行:
cd /opt/mellanox/doca/applications/
meson /tmp/build
ninja -C /tmp/build
doca_file_compression
在 /tmp/build/file_compression/
下创建。
仅编译文件压缩应用程序
要直接仅构建文件压缩应用程序:
cd /opt/mellanox/doca/applications/
meson /tmp/build -Denable_all_applications=false
-Denable_file_compression=true
ninja -C /tmp/build
doca_file_compression
在 /tmp/build/file_compression/
下创建。
或者,用户可以在 meson_options.txt
文件中设置所需的标志,而不是在编译命令行中提供它们。
在
/opt/mellanox/doca/applications/meson_options.txt
中编辑以下标志:将
enable_all_applications
设置为false
。将
enable_file_compression
设置为true
。
运行以下编译命令:
cd /opt/mellanox/doca/applications/ meson /tmp/build ninja -C /tmp/build
信息doca_file_compression
在/tmp/build/file_compression/
下创建。
故障排除
有关应用程序编译过程中遇到的任何问题,请参阅《DOCA 故障排除》。
应用程序执行
文件压缩应用程序以源代码形式提供。因此,在执行应用程序之前需要进行编译。
应用程序使用说明
Usage: doca_file_compression [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 levelfor
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 Comm Channel device PCI address -r, --rep-pci DOCA Comm Channel device representor PCI address -f, --file File to send by the client / File to write by the server -t, --timeout Application timeoutfor
receiving file content messages,default
is5
sec信息此用法打印输出可以使用 -h(或 --help)选项打印到命令行。
./doca_file_compression -h
信息有关更多信息,请参阅“命令行标志”部分。
在 BlueField 上运行应用程序的 CLI 示例:
./doca_file_compression -p
03
:00.0
-r 3b:00.0
-f received.txt注意DOCA Comm Channel 设备 PCIe 地址 (
03:00.0
) 和 DOCA Comm Channel 设备代表 PCIe 地址 (3b:00.0
) 都应与所需 PCIe 设备的地址匹配。在主机上运行应用程序的 CLI 示例:
./doca_file_compression -p 3b:
00.0
-f send.txt注意DOCA Comm Channel 设备 PCIe 地址 (
3b:00.0
) 应与所需 PCIe 设备的地址匹配。该应用程序还支持基于 JSON 的部署模式,其中所有命令行参数都通过 JSON 文件提供。
./doca_file_compression --json [json_file]
例如:
./doca_file_compression --json ./file_compression_params.json
注意在执行之前,请确保使用的 JSON 文件包含正确的配置参数,特别是部署所需的 PCIe 地址。
命令行标志
标志类型 | 短标志 | 长标志/JSON 键 | 描述 | JSON 内容 |
通用标志 |
|
| 打印帮助概要 | N/A |
|
| 打印程序版本信息 | N/A | |
|
| 设置应用程序的日志级别
|
| |
N/A |
| 设置程序的日志级别
|
| |
|
| 从输入 JSON 文件解析所有命令标志 | N/A | |
程序标志 |
|
| 对于客户端 - 要发送的文件路径 对于服务器 - 要写入文件的路径 注意
这是一个强制性标志。 |
|
|
| Comm Channel DOCA 设备 PCIe 地址 注意
这是一个强制性标志。 |
| |
|
| Comm Channel DOCA 设备代表 PCIe 地址 注意
此标志仅在 DPU 上是强制性的。 |
|
有关支持的标志和执行模式的更多信息,请参阅《DOCA Arg Parser》。
故障排除
有关 DOCA 应用程序的安装或执行过程中遇到的任何问题,请参阅《DOCA 故障排除》。
解析应用程序参数。
初始化参数解析器资源并注册 DOCA 常规参数。
doca_argp_init();
注册文件压缩应用程序参数。
register_file_compression_params();
解析参数。
doca_argp_start();
解析应用程序参数。
设置端点属性。
set_endpoint_properties();
设置最大消息大小为 4080 字节。
设置允许的最大消息数量。
创建通信通道端点。
doca_comm_channel_ep_create();
为客户端/服务器创建端点。
运行客户端/服务器主逻辑。
file_compression_client/server();
清理文件压缩应用程序。
file_compression_cleanup();
释放所有应用程序资源。
参数解析器销毁。
doca_argp_destroy()
/opt/mellanox/doca/applications/file_compression/
/opt/mellanox/doca/applications/file_compression/file_compression_params.json