问题标签 [rdma]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
635 浏览

infiniband - 在 RDMA 中创建多个队列对

我是 RDMA 编程的新手。我的工作流程如下。

看来我只能以这种方式为每个连接的客户端 ID 创建一个队列对。如果我想创造更多,我应该怎么做?

0 投票
1 回答
847 浏览

sockets - rsocket - RDMA 套接字 API - 客户端无法连接到服务器

我使用 rsocket 编写了简单的客户端和服务器程序 - RDMA 套接字 API 使用以下版本的 librdmacm-dev 和 librdmacm1 包(使用 Ubuntu 14.04):

librdmacm1/trusty 1.0.16-1 i386 librdmacm-dev/trusty 1.0.16-1 i386

  1. 当服务器启动时,它在 rselect() 调用中失败,并出现以下错误:

    $ ./rserver 192.168.1.1 8000 rselect: Cannot allocate memory

  2. 代替 rsocket API 使用 Unix Socket API 并尝试通过“/usr/lib/rsocket/librspreload.so”的 LD_PRELOADing 运行服务器,但它失败并出现相同的错误:

    $ export LD_PRELOAD=/usr/lib/rsocket/librspreload.so; ./rserver 192.168.1.1 8000 rselect: Cannot allocate memory

我在 rsockets 上没有找到任何好的在线帮助,也没有找到任何示例工作代码?有人可以帮助解决这个问题吗?

0 投票
1 回答
313 浏览

linux - 如何通过 RDMA(Infiniband)从 KVM 代码中向另一个 KVM 实例发送消息?

我正在尝试在两个KVM实例之间设置RDMA 通道。我想在 hypervisor 内部使用RDMA (Infiniband) Verbs API在两个实例之间发送一个简单的字符串。我不想在用户空间上做任何事情——应该涉及纯粹的内核空间

我遇到了 Verbs API 的示例代码,但这仅与用户空间相关。有人可以指点我一些示例代码吗?

(理想情况下,我希望从页面错误处理程序内部执行此操作,但示例代码可能不会特定于它在管理程序中插入的位置,因此这只是额外的信息。)

0 投票
0 回答
1022 浏览

sockets - SDP和VMA有什么区别?

众所周知,我们可以使用 Infiniband 或 RoCE-Ethernet:

  • VMA - Voltaire 消息加速器 (VMA) Mellanox 的消息加速器 (VMA) 提高了基于消息和流式应用程序的性能...结果是延迟减少了多达 300%,应用程序吞吐量增加了多达 200每台服务器的百分比...

  • SDP - 套接字直接协议 (SDP) 是一种字节流协议,它利用 InfiniBand 结构的功能透明地为现有的基于套接字的网络应用程序实现性能提升。

另外 - 第 9 页:http: //www.informatix-sol.com/docs/TCP_bypass_overview.pdf

在此处输入图像描述

众所周知,SDP 和 VMA 都使用 RDMA-Verbs,并且可以用于已编译的程序二进制文件(libpreload)LD_PRELOAD: http: //www.informatix-sol.com/low-latency.html

与 Openonload 一样,SDP 和 Mellanox 的 VMA 都预加载以加速现有的 TCP/IP 套接字程序。Openonload 保留了 TCP/IP 协议,因此可以单端使用。SDP 和 VMA 都映射到 VERBS,因此必须部署在线路的两端。

还从以下位置获取图像:

在此处输入图像描述

但如果 SDP 和 VMA 都:

  • 绕过 TCP/IP 堆栈
  • 使用 RDMA 动词
  • 必须部署在电线的两端
  • 可用于已编译的程序二进制文件为 (libpreload),运行 program.bin 为:LD_PRELOAD=libsdp.so program.binLD_PRELOAD=libvma.so program.bin

那么为什么速度(延迟和带宽)有如此大的差异?

  • VMA 的延迟比 SDP 低 2.5 倍
  • VMA 的带宽是 SDP 的 1.8 倍
0 投票
1 回答
248 浏览

wireshark - wireshark 解码为 ddp

我正在使用 wireshark 来查看 ddp/rdma 数据包,这通常可以正常工作。有时wireshark无法识别tcp之后的下一个协议是ddp/rdma(虽然我知道是这样),所以我尝试使用“decode as”,但那里没有ddp/rdma的选项。

有没有办法强制wireshark将数据包解析为ddp/rdma?

谢谢!

0 投票
2 回答
227 浏览

java - 相当于 IBM 的 JVerb 在 Oracle 中用于 Java 中的 RDMA

如果我想为 RDMA over Ethernet 使用 RoCE 协议,那么在 Oracle中相当于 IBM 的JVerb是什么?

编辑:也许,JXIO 是我最好的选择?

0 投票
2 回答
494 浏览

infiniband - 没有映射内存的 RDMA 传输

我有应该通过 IB 网络交换文件的补充流程。然后这些文件将被其他进程使用。

工作流程如下:

  1. 在 /dev/shm 中创建文件
  2. 适当调整文件大小
  3. 映射进程虚拟机中的文件
  4. 使用 ibv_reg_mr 注册映射区域
  5. 为数据传输启动 RDMA 操作

原来我的方案的瓶颈是 ib_reg_mr(我单独测量了注册 3Gb 内存需要 1.78 秒)。似乎它触发了内存区域到进程地址空间的映射。不幸的是,不需要这个操作,因为接收进程不使用这块内存。该内存应该稍后被其他进程映射和使用。

因此,我认为避免更改接收过程的页表是明智之举,但我根本无法找到它是否可能。

您能否建议我,如果有一种方法可以在内存区域上启动数据传输而不将其映射到进程的地址空间?

0 投票
1 回答
810 浏览

kernel - 适用于 Linux 内核的 RDMA API

是否有可用于内核空间的RDMA(Infiniband) API?我发现的大多数 API 都是用户空间。kDAPL和kAL可以在linux内核中使用;但是,我还没有找到使用这些 API 的示例代码。有人可以帮我提供内核空间中 RDMA 的示例代码吗?

0 投票
1 回答
699 浏览

infiniband - 如何避免卡在 rdma_get_recv_comp() 或 __ibv_get_cq_event() 中?

各位 RDMA 黑客,有谁知道调用 __ibv_get_cq_event() 的 rdma_get_recv_comp() 是否超时?

我的问题与此处显示的程序相同: RDMA 程序随机挂起

它工作正常,但它对随机客户端断开连接并不稳健。具体来说,如果我强行杀死客户端,那么服务器就会卡在 rdma_get_recv_comp() / ipv_get_cq_event() 中。

这是针对 Mellanox ConnectX-3 的,我检查了默认超时是 2.14 秒,重试次数 = 1。但我不清楚阻塞模式下的 ibv_get_cq_event() 是否会超时。ibv_modify_qp() 文档中对超时的解释似乎表明超时仅适用于发送 (rdma_get_send_comp()),因为只有发送方等待 ACK。但我认为允许接收也有超时没有任何困难。

如果在这种情况下预计会挂在 rdma_get_recv_comp() 内,我该如何避免它或实现超时?

一些可能性:

  1. 更改我的客户端关闭顺序,以便它执行所有必要的发送,这样它就不会让服务器上的 rdma_get_recv_comp() 挂起?

  2. 用轮询接收完成的循环替换 rdma_get_recv_comp()

0 投票
1 回答
656 浏览

linux-kernel - 用于 RDMA 的 Krping 模块

我一直在尝试使 krring 模块工作,可以在这里找到:http ://git.openfabrics.org/?p=~sgrimberg/krping.git;a=summary

我通过 Mellanox ofed kernel 3.3 安装驱动程序。已经从 ofa-kernel/default 复制了 Module.symvers 但它不起作用。

我已经在 ubuntu 12.04 和 14.04 的不同内核上尝试过它。我使用的内核是 3.18、3.5 和 4.0。但是,每次我遇到同样的问题。如果有人编译了 krping 并且可以帮助解决这个问题?特别是内核版本、操作系统和安装他们使用的驱动程序的过程。

制作文件1

生成文件2

以上是我尝试编译模块的两个makefile。建议我可以尝试的任何更改。