Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prov/efa: Minimize calls to efa_rdm_ep_get_peer in the CQ read path #10848

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

sunkuamzn
Copy link
Contributor

This change is useful for two reasons
(1) The efa_rdm_ep_get_peer function accesses the AV and it's easier to
lock access to the AV when the call happens in fewer places
(2) With an implicit AV, the fi_addr will always be -1 for peers not
explicitly inserted to the AV. So efa_rdm_ep_get_peer will need to do
a reverse hashmap lookup with a significant performance cost for such
peers. So minimizing the number of calls to efa_rdm_ep_get_peer is more
performant.

This change is necessary to implement an implicit AV.
With an implicit AV, using the fi_addr is no longer an option for
identifying different peers. All unknown peers will have fi_addr set
to -1. And the index in the implicit AV can be re-used, so it's not
guaranteed to be unique.

This commit makes the rxe_map part of the peer struct and only uses the
msg_id as the hash key

Signed-off-by: Sai Sunku <[email protected]>
This change is useful for two reasons
(1) The efa_rdm_ep_get_peer function accesses the AV and it's easier to
lock access to the AV when the call happens in fewer places
(2) With an implicit AV, the fi_addr will always be -1 for peers not
explicitly inserted to the AV. So efa_rdm_ep_get_peer will need to do
a reverse hashmap lookup with a significant performance cost for such
peers. So minimizing the number of calls to efa_rdm_ep_get_peer is more
performant.

Signed-off-by: Sai Sunku <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant