You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 5, 2023. It is now read-only.
ibv_ack_cq_events() seems to be the main bottleneck for the librpma library when the completion event channel is used.
To avoid the problem ibv_ack_cq_events() shall be called less frequently.
It is also wise to call it before ibv_get_cq_event() as it is more possible that we still have some spare time before a new event will be ready to obtain via ibv_get_cq_event().
Description
The struct rpma_cq shall be extended with a field unsigned int unack_cqe; and set to 0 in rpma_cq_new().
(*cq_ptr)->cq = cq;
(*cq_ptr)->unack_cqe = 0;
unack_cqe shall be increased every time ibv_get_cq_event returns a valid event in rpma_cq_wait().
FEAT: rpma_cq_wait() performance optimization
Rationale
ibv_ack_cq_events()
seems to be the main bottleneck for the librpma library when the completion event channel is used.To avoid the problem
ibv_ack_cq_events()
shall be called less frequently.It is also wise to call it before
ibv_get_cq_event()
as it is more possible that we still have some spare time before a new event will be ready to obtain viaibv_get_cq_event()
.Description
The
struct rpma_cq
shall be extended with a fieldunsigned int unack_cqe;
and set to0
inrpma_cq_new()
.unack_cqe
shall be increased every timeibv_get_cq_event
returns a valid event inrpma_cq_wait()
.As minimum the
ibv_ack_cq_events()
shall be called beforeibv_cq
is deleted insiderpma_cq_delet()
:but it also must be called cyclically as part of
rpma_cq_wait
(Please observe thatibv_ack_cq_events()
operation is moved beforeibv_get_cq_event()
):The text was updated successfully, but these errors were encountered: