wxdwfc / rlib

RLib is a header-only library for easier usage of RDMA.
44 stars 10 forks source link

[qp_impl.hpp:140] poll till completion error: 12 transport retry counter exceeded #4

Closed sunce4t closed 10 months ago

sunce4t commented 10 months ago

你好,感谢开源rlib! 我正在使用rlib库完成多节点部署,但是在部署时,我发现跨节点通信会报标题这个错误,在单节点中是没有问题的。 我使用RdmaCtrl来建立qp连接,建立连接的过程没有任何问题,但是当建立连接后,使用RDMA read就会报错。 我想请问rlib以前测试的时候测试过多节点吗? 感谢解答!

ProjectMitosisOS commented 10 months ago

你好,我们经过多节点测试;这个错误说的是timeout;正常情况下没有这个问题;我建议可以先用i b_send_bw等工具测试下连通性。

sunce4t commented 10 months ago

好的,谢谢,我们先去测试一下! 感谢解答!

ProjectMitosisOS commented 10 months ago

ps:rlib我们现在不维护了。我们后续用rust重构了rlib(krcore),在(https://github.com/SJTU-IPADS/krcore-artifacts)进行维护。krcore代码会更加清晰,文档和测试也比较全,欢迎使用

sunce4t commented 10 months ago

您好,感谢告知,但我们之前已经写好了代码,所以目前还是在使用rlib。 经过我们测试,发现当使用rlib读取大于1024B到2048B中间某个值(具体并未确定)的数据时,就会出现timeout的情况的。(ps:已经测试过网卡的连通性,确认正常)。 当读取小于该值时,则无timeout 的问题。 我们使用rlib仓库的示例代码进行测试,poll_till_completion的timeout参数设置为no_timeout,但仍然会出现该问题。 因为我将timeout参数设置为了no_timeout,所以我猜测rlib有对单次rdma读取数据的大小进行限制? 希望获得您的解答!

ProjectMitosisOS commented 10 months ago

Hi. poll_till_completion的timeout是软件层的timeout,我之前说的是RDMA NIC的timeout,是两个东西(sorry我的描述又些confusion);所以设置了没用。

这个我猜和QP的配置有关;你方便看下用的网卡的MTU是多少吗?可以通过ibv_devinfo 查看。

sunce4t commented 10 months ago

您好,我们的网卡MAX MTU为4096B,ACTIVE MTU为1024B。请问该怎么采用rlib通过一次读请求读取较大数据(例如20MB)呢? 感谢您的解答!

ProjectMitosisOS commented 10 months ago

可以试着将

https://github.com/wxdwfc/rlib/blob/89d36d33760361aa9beeb379938afdf8175ab8ef/qp_impl.hpp#L174C1-L174C1

这里面的MTU改成1024B试试。

sunce4t commented 10 months ago

您好,将qp_impl.hpp中的IBV_MTU_4096改成IBV_MTU_1024后成功运行了!非常感谢您的解答! 我们还想知道为什么修改这个参数就可以成功读取大数据呢?希望获得您的解答!

ProjectMitosisOS commented 10 months ago

我的理解是网卡没法处理超过active_MTU的数据。具体没找到特别好的文档;这可能和网卡+驱动的实现有关。

sunce4t commented 10 months ago

感谢您的解答,非常感谢!