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

Memory registered for RDMA never deregistered #158

Open
TylerADavis opened this issue Aug 24, 2017 · 1 comment
Open

Memory registered for RDMA never deregistered #158

TylerADavis opened this issue Aug 24, 2017 · 1 comment

Comments

@TylerADavis
Copy link
Collaborator

Currently, memory is registered for RDMA in two locations.The first of these is the send/receive buffers within the connection context, and the other is that whenever a message is sent or received, the serialized message/buffer to receive is registered. While the buffers for the connection context are deregistered, the other buffers are never deregistered.

There may be some performance impact if we have deregistration in the critical path.

One approach may be to have the RDMAMem struct automatically deregister its memory on destruction if the memory was registered.

@TylerADavis
Copy link
Collaborator Author

Currently, there is a clear method within RDMAMem that deregisters the memory, but it is never used.

According to the documentation for ibv_dereg_mr, the memory should be deregistered before it is freed.

For read operations, the RDMAMem is destroyed when apply() is called on the RDMAOpInfo, and the memory is automatically freed when the ClientFuture is destroyed.

For write operations, the memory is currently freed in on_completion, and it does not seem that the RDMAMem is ever destroyed.

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

No branches or pull requests

1 participant