All of lore.kernel.org
 help / color / mirror / Atom feed
* How best to integrate dmClock QoS library into ceph codebase
@ 2017-04-04 13:32 J. Eric Ivancich
  2017-04-04 16:00 ` Adam C. Emerson
  2017-05-16  2:46 ` Ming Lin
  0 siblings, 2 replies; 15+ messages in thread
From: J. Eric Ivancich @ 2017-04-04 13:32 UTC (permalink / raw)
  To: ceph-devel

In our work to improve QoS with ceph, we implemented the dmClock algorithm (see: https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Gulati.pdf).

The algorithm is implemented as a general library that could be used in ceph and in other projects unrelated to ceph. To do this the dmClock library code makes use of C++ templates. On the server side, the key class takes template parameters to describe the type of a request and the type of a client identifier. On the client side, the key class takes a template parameter for the type of a server identifier.

You can find the library here:

   https://github.com/ceph/dmclock

The question is how best to integrate this library with ceph code in our git repo into the future.

There are three obvious options:

   1. Keep dmClock as a separate repo and incorporate it into ceph as a git submodule.
   2. Keep dmClock as a separate repo and incorporate it into ceph as a git subtree.
   3. Move the code into the ceph tree and stop maintaining as a generalized library.

Both git submodules and git subtrees have their own set of challenges; neither is perfect. Many have weighed in their relative advantages and disadvantages (https://www.google.com/search?q=git+submodule+subtree).

I’m inclined to keep it separate (option 1 or 2) so that others might use it in other projects.

When I started the integration, Sam recommended that it be maintained as a subtree. So that’s how it’s implemented in my not-yet-merged branch. The key challenges have been with rebases that include the commit in which the subtree was added and with pushing code changes back to the library. Since relatively few would likely be doing these types of ops, perhaps option 2 might be easiest. Currently our git PR process has an automated check for "Unmodifed Submodules". I’m guessing we’d likely want a similar check for changes in subtree code.

An argument for making it a submodule is that ceph already uses submodules and ceph developers are familiar with working with (and around) them.

But perhaps others would like to weigh in.

Thanks,

Eric

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2017-07-27 20:24 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-04 13:32 How best to integrate dmClock QoS library into ceph codebase J. Eric Ivancich
2017-04-04 16:00 ` Adam C. Emerson
2017-05-16  2:46 ` Ming Lin
2017-05-16 12:29   ` J. Eric Ivancich
2017-05-16 17:59     ` Ming Lin
2017-06-21 17:38     ` sheng qiu
2017-06-21 21:04       ` J. Eric Ivancich
2017-06-27 21:21         ` sheng qiu
2017-06-28 18:33           ` J. Eric Ivancich
2017-06-28 18:55             ` sheng qiu
2017-06-29 18:03               ` J. Eric Ivancich
2017-07-04 12:35                 ` Jin Cai
2017-07-05 22:06                   ` J. Eric Ivancich
2017-07-11 18:14             ` sheng qiu
2017-07-27 20:24               ` J. Eric Ivancich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.