fix error checking against IB verbs API (#2265)#3034
Conversation
Signed-off-by: Qun, Li <qun.li@zstack.io>
|
LGTM |
对。 |
|
@wwbmmm @chenBright 新推了一个 commit 解决评论中提出的建议。 |
|
解决了一直困扰我的一个日志问题 |
|
看这个日志window还有不少空间,挺奇怪了。这个问题,你们那边这个pr用了之后没有遇到过是吗? |
Signed-off-by: Qun, Li <qun.li@zstack.io>
|
@yanglimingcn @chenBright @Tuvie Comments? Concerns? |
|
LGTM |
|
hi,这个能使用rdma performance复现出来吗? 我们也遇到了这个问题,但我没找到简单的复现方法,我个人猜测是 RDMA的SQ和RQ共享了CQ后,此时SQ和RQ之间生成CQE的顺序是不保证的,因此是否存在这样一种罕见情况: RQ收到对端的SendACK后生成的CQE 在 SQ的CQE之前,在PollCQ中处理时,1.先处理到RQ的CQE,增加window的值;2.再处理SQ的CQE;如果在1和2这两步之间有其他的线程发请求,检查到window的值非0,但此时由于还没poll到SQ的CQE,SQ中的指针没有更新,就导致无法发送成功。 |
具体是报什么错?图片好像显示不出来。 |
[PS2][W][0928 22:13:48.368256][20670][rdma_endpoint.cpp:878] Fail to ibv_post_send: Cannot allocate memory, window=7, sq_current=1 |
前面 7/22 @yanglimingcn 也提到了这个现象。没有这个补丁时,由于这里 ENOMEM 未能捕获,导致数据错。可能还是滑动窗口逻辑的问题。也许指定更大的 attachment_size/thread_num/queue_depth 能复现?或者多个 client 压一个 server. |
hi @yanglimingcn ,想请教下,之前你是使用rdma performance测试程序遇到的这个错误吗,可以提供一下相应的参数吗 |
|
我们没有遇到,不过应该是有些人也遇到过,通过调整sq和rq的数量就解决了,我觉得问题和你描述的也有联系。 |
|
这个问题你这边如果能系统性的解决欢迎提出PR |




What problem does this PR solve?
Issue Number: #2265
Problem Summary:
现有的代码中对 IB verbs API 的使用有误。很多 API 的返回值本身是错误码(errno),但并不会修改 errno.
What is changed and the side effects?
Changed:
Side effects:
Performance effects:
Breaking backward compatibility:
Check List: