DOCA 文档 v2.10.0

DOCA 文件压缩应用指南

本文档提供了基于 NVIDIA® BlueField® DPU 的文件压缩实现。

文件压缩应用程序展示了如何使用 DOCA Compress API 通过硬件加速压缩和解压缩数据,以及如何使用 DOCA Comch API 发送和接收数据。

该应用程序的逻辑包括客户端和服务器。

  • 客户端 - 应用程序打开文件,压缩文件,并将源文件的校验和与压缩数据一起发送到服务器。

  • 服务器端 - 应用程序将接收到的文件保存在缓冲区中,解压缩文件,并将接收到的校验和与计算出的校验和进行比较。

文件压缩应用程序客户端在主机上运行,服务器在 DPU 上运行。

sys-design-version-1-modificationdate-1734469555980-api-v2.png

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

app-arch-version-1-modificationdate-1734469554993-api-v2.png

  1. 连接在客户端和服务器端均通过 DOCA Comm Channel API 建立。

  2. 客户端压缩数据。

    • 当压缩引擎可用时 - 使用 DOCA Compress API 提交压缩作业,并将结果发送到服务器。

    • 当压缩引擎不可用时 - 在软件中压缩数据。

  3. 客户端发送发送压缩文件内容所需的消息数量。

  4. 客户端发送大小不超过 4080 字节的数据段。

  5. 服务器将接收到的数据保存在缓冲区中,并提交解压缩作业。

  6. 当成功接收到文件的所有部分后,服务器向客户端发送 ACK 消息。

  7. 服务器将接收到的校验和与计算出的校验和进行比较。

  8. 服务器将解压缩后的数据写入输出文件。

此应用程序利用以下 DOCA 库:

有关更多信息,请参阅它们各自的编程指南。

信息

有关如何安装 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 文件中设置所需的标志,而不是在编译命令行中提供它们。

  1. /opt/mellanox/doca/applications/meson_options.txt 中编辑以下标志:

    • enable_all_applications 设置为 false

    • enable_file_compression 设置为 true

  2. 运行以下编译命令:

    复制
    已复制!
                

    cd /opt/mellanox/doca/applications/ meson /tmp/build ninja -C /tmp/build

    信息

    doca_file_compression/tmp/build/file_compression/ 下创建。

故障排除

有关应用程序编译过程中遇到的任何问题,请参阅《DOCA 故障排除》。

应用程序执行

文件压缩应用程序以源代码形式提供。因此,在执行应用程序之前需要进行编译。

  1. 应用程序使用说明

    复制
    已复制!
                

    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 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 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 timeout for receiving file content messages, default is 5 sec

    信息

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

    复制
    已复制!
                

    ./doca_file_compression -h

    信息

    有关更多信息,请参阅“命令行标志”部分。

  2. 在 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 设备的地址匹配。

  3. 在主机上运行应用程序的 CLI 示例:

    复制
    已复制!
                

    ./doca_file_compression -p 3b:00.0 -f send.txt

    注意

    DOCA Comm Channel 设备 PCIe 地址 (3b:00.0) 应与所需 PCIe 设备的地址匹配。

  4. 该应用程序还支持基于 JSON 的部署模式,其中所有命令行参数都通过 JSON 文件提供。

    复制
    已复制!
                

    ./doca_file_compression --json [json_file]

    例如:

    复制
    已复制!
                

    ./doca_file_compression --json ./file_compression_params.json

    注意

    在执行之前,请确保使用的 JSON 文件包含正确的配置参数,特别是部署所需的 PCIe 地址。

命令行标志

标志类型

短标志

长标志/JSON 键

描述

JSON 内容

通用标志

h

help

打印帮助概要

N/A

v

version

打印程序版本信息

N/A

l

log-level

设置应用程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

  • TRACE=70(需要使用 TRACE 日志级别支持进行编译)

复制
已复制!
            

"log-level": 60

N/A

sdk-log-level

设置程序的日志级别

  • DISABLE=10

  • CRITICAL=20

  • ERROR=30

  • WARNING=40

  • INFO=50

  • DEBUG=60

  • TRACE=70

复制
已复制!
            

"sdk-log-level": 40

j

json

从输入 JSON 文件解析所有命令标志

N/A

程序标志

f

file

对于客户端 - 要发送的文件路径

对于服务器 - 要写入文件的路径

注意

这是一个强制性标志。

复制
已复制!
            

"file": "/tmp/data.txt"

p

pci-addr

Comm Channel DOCA 设备 PCIe 地址

注意

这是一个强制性标志。

复制
已复制!
            

"pci-addr": 03:00.1 

r

rep-pci

Comm Channel DOCA 设备代表 PCIe 地址

注意

此标志仅在 DPU 上是强制性的。

复制
已复制!
            

"rep-pci": b1:00.1 

信息

有关支持的标志和执行模式的更多信息,请参阅《DOCA Arg Parser》。


故障排除

有关 DOCA 应用程序的安装或执行过程中遇到的任何问题,请参阅《DOCA 故障排除》。

  1. 解析应用程序参数。

    1. 初始化参数解析器资源并注册 DOCA 常规参数。

      复制
      已复制!
                  

      doca_argp_init();

    2. 注册文件压缩应用程序参数。

      复制
      已复制!
                  

      register_file_compression_params();

    3. 解析参数。

      复制
      已复制!
                  

      doca_argp_start();

      1. 解析应用程序参数。

  2. 设置端点属性。

    复制
    已复制!
                

    set_endpoint_properties();

    1. 设置最大消息大小为 4080 字节。

    2. 设置允许的最大消息数量。

  3. 创建通信通道端点。

    复制
    已复制!
                

    doca_comm_channel_ep_create();

    1. 为客户端/服务器创建端点。

  4. 运行客户端/服务器主逻辑。

    复制
    已复制!
                

    file_compression_client/server();

  5. 清理文件压缩应用程序。

    复制
    已复制!
                

    file_compression_cleanup();

    1. 释放所有应用程序资源。

  6. 参数解析器销毁。

    复制
    已复制!
                

    doca_argp_destroy()

  • /opt/mellanox/doca/applications/file_compression/

  • /opt/mellanox/doca/applications/file_compression/file_compression_params.json

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