Bufferlist is a common theme in Mark's weekly performance meetings, and
today's was no exception. Radoslaw highlighted the cost of atomic ref
counting associated with sharing buffers, and there was broad agreement
that the seastar osd's data path should avoid using bufferlist entirely
for that reason.
However, one choice that I made in the design of the seastar messenger
was to use Ceph's existing bufferlist-based Message types so that their
encode/decode wouldn't diverge between the seastar osd and its librados
clients and peers like ceph-mon/mgr.
In order to create a bufferlist-free data path, we'll need to find some
abstraction that allows Message types to define a serialization format
that can work both for bufferlist and for seastar's native buffer types
- whether that covers all Message types, or just some subset of
important ones like MOSDOp/Reply.
Any thoughts on what this could look like?
Casey