I knew that RDMA requires both sender and receiver register their memory before data transfer. I am wondering if the registered memory on both sender and receiver should be same or not. If same, I think RDMA wastes lots of memory since both side basically are storing the identical data. Is there any way to reduce such problem?
1 Answer
After a network transfer, both the sender and the receiver contain copies of the same information. However, depending on the application and communication pattern, buffers on both sides can be reused. For example, the initiator of a remote read operation can use the same buffers for the results of the read after it is done with the previous results.
2 Comments
Technorc Luke
Is that possible that the buffer size on both side are different. What I want to do is that sender keeps writing or reading 4K page from/to receiver. You can think receiver actually is a data store. In this case, should I set the buffer on receiver to 10GB(e.g. big enough to store tons of pages), and set sender buffer to 4K. or any better design for that.
haggai_e
You can also copy in and out of a smaller buffer, or dynamically register and unregister memory as needed. On some devices you can use on demand paging, so the communication buffers are not pinned to memory.