6

如何使用 RDMA 在 Windows 下将内存块从一台服务器复制到另一台服务器?我们没有 infiniband,但我们有 10gb 网络交换机。我需要的只是一个例子,但我对谷歌的运气并不好。

编辑:

好吧,到目前为止没有人回答我的问题。我只需要一个示例的链接,或者几个函数的名称。到目前为止,我阅读的所有内容似乎都在驱动程序 SDK 或套接字中。我想在我们的软件中使用 RDMA 来更新来自主服务器的本地数据副本。数据最大为 10GB。大多数时候更新大约为 1GB,但如果服务器必须重新启动,则整个压缩数据集为 10GB。我想几乎不断地更新一些数据,RDMA 似乎是要走的路。

4

3 回答 3

5

您需要 NetworkDirect API。没有任何关于如何使用 NetworkDirect 编写东西的文档,只有interface description。我能找到的最接近文档的内容是从这里开始,然后深入每个链接。但是您可以查看ND 测试源代码以获取使用示例。

于 2013-05-08T07:14:40.187 回答
4

Isis2 (isis2.codeplex.com) 现在支持 Linux 和 Windows 上的 RDMA,MPI 也支持。我建议您使用这些现有的库。RDMA 很难直接使用(我在过去一年的大部分时间里都在向 Isis2 添加 RDMA 支持)。文档很糟糕,只有少数设备真正提供 RDMA(尽管数量在增加),一旦你了解了你需要做什么,实际上也很难做到。如果您好奇,请查看 INFINIBAND 的 Isis2 代码——我的东西是开源的。

我对 Trevor 提到的 Windows I/O 完成机制没有任何经验,但只是指出一个明显的问题:如果您不将自己限制在 Linux 和 Windows 的共同方面,那么您最终会得到不可移植的代码。所以这也是一个问题——只有 RDMA 的某些方面在两个平台上都有效,而且人们通过反复试验发现了这一点!

于 2014-07-11T12:55:02.390 回答
2

OpenFabrics Enterprise Distribution for Windows提供了一个类似于 Linux 上常用的libibverbs接口。主要区别似乎在于处理完成通道:在 Linux 上,您将轮询文件描述符,但在 Windows 上,有一个(文档很少)基于 I/O 完成端口的帮助程序库。Windows OFED (WinOF) libibverbs 是 winverbs 之上的包装器,winverbs 是一种基于 COM 的 API,用于镜像 libibverbs 和关联的驱动程序。当然,根据这个线程,NetworkDirect 是微软要求硬件供应商支持的唯一 API。

于 2013-11-04T23:48:32.347 回答