Re: single-threaded seastar-osd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jan 6, 2019 at 6:30 PM Radoslaw Zarzynski <rzarzyns@xxxxxxxxxx> wrote:
>
> On Sat, Jan 5, 2019 at 3:42 PM kefu chai <tchaikov@xxxxxxxxx> wrote:
>
> > recently, when we are working on cross-core messenger[0], we found
> > that, in order to share the connection between cores we need to have
> > types like "seastar::lw_shared_ptr<seastar::foreign_ptr<ConnectionRef>>",
> > because
> > - the connections to peer OSDs are shared across cores,
> > - the connections are shared by multiple continuations on the local
> > core -- either locally or remotely.
>
> Well, I perceive this type as a clever solution to get back some of
> the properties seastar::foreign_ptr had taken from us. What worries
> me is that we need such heavy artillery at the very early stage of
> project life.

I think this is actually the key point to address. For all the
potential futures we have, there are two inescapable facts:
1) a single-core OSD will be simpler to program
2) a single-core OSD will be dramatically less flexible in the face of
change than anything else.

So the real question boils down to: is the increased development speed
worth the HUGE lock-in we get?

I'm not doing much work on it yet, but I tend to think it's not worth it:
1) It's not surprising we are setting up "heavy artillery" now — this
is exactly when we should be setting it up, as we establish the
infrastructure needs we have which differ from what ScyllaDB needs.
The messenger-PG crossbar has been much-discussed and was anticipated.
2) As I understand it, the complexity we're setting up here is really
one-time programmer costs which are well-abstracted. So yes, the
messenger is a little more complicated and the real type we alias to
ceph:message (or whatever) is larger, but it doesn't impose load on
everyday developers adding features to RADOS.
3) If we restrict ourselves to a single-core OSD, porting the code
away from that will be nearly impossible. If we establish practices
from the start which allow us to go multi-core, it's easy to switch to
single-core with a few type aliases and get whatever speed benefits it
promises us.
-Greg



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux