Feature #527
closedzero copy reads, msgr rx buffer infrastructure
0%
Description
Currently all messages read off the wire (include read results) go into newly allocated buffers. This results in a data copy for users of the librados C API, who specify an existing buffer.
Modify the messenger infrastructure to allow specifying a buffer to read a particular message type/tid data payload into.
Include infrastrcture for locking said buffer, so that racing messages coming in off the wire (say, from 2 osds) don't fight for a buffer. And so that the buffer can be yanked away when a result is read (we are not allowed to touch the user buffer after we return). This will require some locking surrounding the tcp read in SimpleMessenger's read_message().
This will likely also be useful for infiniband support.
See this thread: http://marc.info/?t=128437909600001&r=1&w=2