DOCA 存储零拷贝
本文档提供基于 NVIDIA® BlueField® 的数据存储实现。
零拷贝存储参考应用程序演示了一种使用 DOCA Comch、DOCA Core 和 DOCA 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 读取和写入操作以满足发起程序的请求。
以下图表显示了这些应用程序的典型部署

此处需要注意的重要方面是
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 应用程序之间提供高性能数据路径链接
应用程序的执行分为三个主要阶段
初始配置和设置。
数据路径高性能执行。
拆卸。
以下内容概述了这些阶段和关键活动

每个步骤的更多详细信息在各个应用程序自身的文档中描述。
数据路径执行涉及形成一个或多个包含以下内容的请求
要执行的操作
要使用的数据
与响应一起返回的其他用户元数据
这些请求使用 DOCA Comch 生产者从 initiator_comch 发送到 comch_to_rdma。Comch_to_rdma 原封不动地中继此请求,以便由 target_rdma 处理。Target_rdma 执行请求指示的内存与分配为模拟存储的内存之间的数据实际传输。
如果需要,这将是开始扩展应用程序以包含物理存储的位置。
下图显示了描述的数据流,其中绿色部分是应用程序执行的工作,蓝色部分是硬件在后台执行的工作

有关如何安装 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
文件中设置所需的标志,而不是在编译命令行中提供它们
编辑
/opt/mellanox/doca/applications/meson_options.txt
中的以下标志将
enable_all_applications
设置为false
将
enable_storage
设置为true
运行以下编译命令
cd /opt/mellanox/doca/applications/ meson /tmp/build ninja -C /tmp/build
信息存储零拷贝应用程序在
/tmp/build/storage/
下创建。
故障排除
有关应用程序编译时遇到的任何问题,请参阅 DOCA 故障排除。
应用程序必须按以下顺序启动才能正确执行
doca_storage_zero_copy_target_rdma
doca_storage_zero_copy_comch_to_rdma
doca_storage_zero_copy_initiator_comch
请参阅每个应用程序的页面,了解应为每个应用程序提供的参数集
所有应用程序在 initiator_comch 完成后终止。