Project

General

Profile

Actions

Feature #527

closed

zero copy reads, msgr rx buffer infrastructure

Added by Sage Weil over 13 years ago. Updated about 5 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

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

Actions

Also available in: Atom PDF