DOCA 文档 v2.10.0

DOCA 存储零拷贝

本文档提供基于 NVIDIA® BlueField® 的数据存储实现。

零拷贝存储参考应用程序演示了一种使用 DOCA ComchDOCA CoreDOCA RDMA 库的方法,以利用硬件加速来实现简单的数据存储解决方案,该解决方案允许高效地存储和检索数据,而无需任何不必要的数据复制。在此应用程序套件中,数据使用 DOCA RDMA 直接从发起程序传输到目标,而发起程序不知道存储目标。

零拷贝存储参考包含三个应用程序

  • doca_storage_zero_copy_comch_to_rdma (comch_to_rdma) – 将用户与存储目标隔离,并在发起程序和目标之间中继消息

  • doca_storage_zero_copy_initiator_comch (initiator_comch) – 一个简单的基准测试,用于演示如何配置存储以及如何通过读取或写入数据与之交互

  • doca_storage_zero_copy_target_rdma (target_rdma) - 一个模拟存储应用程序,它仅使用一块内存而不是物理磁盘。执行 RDMA 读取和写入操作以满足发起程序的请求。

以下图表显示了这些应用程序的典型部署

deployment-version-1-modificationdate-1734469948377-api-v2.png

此处需要注意的重要方面是

  • Initiator_comch 和 comch_to_rdma 在同一物理机上运行,然后通过 RDMA 与 target_rdma 通信

  • TCP 套接字(未显示)用于允许 comch_to_rdma 和 target_rdma 在数据路径之前和之后进行通信,以处理设置和拆卸

  • DOCA RDMA 用于在 comch_to_rdma 和 target_rdma 应用程序之间提供高性能数据路径链接

  • DOCA Comch 客户端-服务器(未显示)用于在 initiator_comch 和 comch_to_rdma 之间执行早期配置和控制交换,然后 DOCA Comch 消费者-生产者对象用于在 initiator_comch 和 comch_to_rdma 应用程序之间提供高性能数据路径链接

应用程序的执行分为三个主要阶段

  1. 初始配置和设置。

  2. 数据路径高性能执行。

  3. 拆卸。

以下内容概述了这些阶段和关键活动

init_flow-version-1-modificationdate-1734469948637-api-v2.png

信息

每个步骤的更多详细信息在各个应用程序自身的文档中描述。

数据路径执行涉及形成一个或多个包含以下内容的请求

  • 要执行的操作

  • 要使用的数据

  • 与响应一起返回的其他用户元数据

这些请求使用 DOCA Comch 生产者从 initiator_comch 发送到 comch_to_rdma。Comch_to_rdma 原封不动地中继此请求,以便由 target_rdma 处理。Target_rdma 执行请求指示的内存与分配为模拟存储的内存之间的数据实际传输。

信息

如果需要,这将是开始扩展应用程序以包含物理存储的位置。

下图显示了描述的数据流,其中绿色部分是应用程序执行的工作,蓝色部分是硬件在后台执行的工作

data_flow-version-1-modificationdate-1734469948957-api-v2.png

此应用程序利用以下 DOCA 库

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

信息

有关如何安装 BlueField 相关软件的详细信息,请参阅 DOCA Linux 安装指南

DOCA 参考应用程序的安装包含应用程序的源代码以及匹配的编译说明。这允许“按原样”编译应用程序,并提供修改源代码然后编译新版本应用程序的能力。有关应用程序以及开发和编译技巧的更多信息,请参阅 DOCA 参考应用程序 页面。

应用程序的源代码可以在应用程序的目录下找到:/opt/mellanox/doca/applications/storage/

编译所有应用程序

所有 DOCA 应用程序都在单个 meson 项目下定义。因此,默认情况下,编译包括所有应用程序。

要一起构建所有应用程序,请运行

复制
已复制!
            

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

存储零拷贝应用程序包括

  • doca_storage_zero_copy_initiator_comch

  • doca_storage_zero_copy_comch_to_rdma

  • doca_storage_zero_copy_target_rdma

这些应用程序构建在 /tmp/build/storage/ 下。

仅编译存储零拷贝应用程序

要直接仅构建存储零拷贝应用程序

复制
已复制!
            

cd /opt/mellanox/doca/applications/ meson /tmp/build -Denable_all_applications=false -Denable_storage=true ninja -C /tmp/build

信息

存储零拷贝应用程序构建在 /tmp/build/storage/ 下。

或者,用户可以在 meson_options.txt 文件中设置所需的标志,而不是在编译命令行中提供它们

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

    • enable_all_applications 设置为 false

    • enable_storage 设置为 true

  2. 运行以下编译命令

    复制
    已复制!
                

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

    信息

    存储零拷贝应用程序在 /tmp/build/storage/ 下创建。

故障排除

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

应用程序必须按以下顺序启动才能正确执行

  1. doca_storage_zero_copy_target_rdma

  2. doca_storage_zero_copy_comch_to_rdma

  3. doca_storage_zero_copy_initiator_comch

请参阅每个应用程序的页面,了解应为每个应用程序提供的参数集

信息

所有应用程序在 initiator_comch 完成后终止。

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