All of lore.kernel.org
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@eu.citrix.com>
To: Dario Faggioli <dario.faggioli@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Lars Kurth <lars.kurth@citrix.com>, Wei Liu <Wei.Liu2@citrix.com>,
	Xi Sisu <xisisu@gmail.com>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>, Tim Deegan <tim@xen.org>,
	Robbie VanVossen <robert.vanvossen@dornerworks.com>,
	Ian Campbell <Ian.Campbell@eu.citrix.com>,
	Meng Xu <xumengpanda@gmail.com>, Jan Beulich <JBeulich@suse.com>,
	"josh.whitehead" <josh.whitehead@dornerworks.com>,
	Keir Fraser <keir@xen.org>
Subject: Re: Plans for the SEDF scheduler
Date: Thu, 21 May 2015 13:45:56 +0100	[thread overview]
Message-ID: <555DD384.8040905@eu.citrix.com> (raw)
In-Reply-To: <1432211977.7907.86.camel@citrix.com>

On 05/21/2015 01:39 PM, Dario Faggioli wrote:
> Hi everyone,
> 
> I've copied the committers, Lars as community manager, Wei as the
> release manager, George as the scheduler maintainer, RT-Xen and
> DornerWorks people, which have some interest in the field, I believe.
> Please, widen the crowd if you think it's necessary/best.
> 
> Straight to the point: the SEDF scheduler code is in a rather bad state:
> 
>  * it is buggy (tests are failing since... well, at least since when I
>    joined the community, 3 years ago!). Basically, it was not designed
>    with host and guest SMP support in mind, and has never been updated;
> 
>  * it is not used. Well, that's hard to tell, of course, but I really
>    really expect that to be the case.
> 
>  * it is useless as:
>     - it tries to be a general purpose scheduler, but we have Credit
>       (and, soon enough, hopefully, Credit2) for that
>     - for real-time we have ARINC653 (super-hard real-time), maintained
>       and supported, and RTDS (hard/soft real-time), actively
>       developed.
> 
> For these reasons, I think we should get rid of it. Actually, I've
> discovered that this was the plan in 2006 already:  :-)
> 
>  git show db51cd09d37ea44b126bb259f9392248afd768e6
>  ...
>  diff --git a/docs/src/interface.tex b/docs/src/interface.tex
>  index c9017c7..9a59840 100644
>  --- a/docs/src/interface.tex
>  +++ b/docs/src/interface.tex
>  @@ -209,8 +209,8 @@ implement timeout values when they block.
>  
>   Xen offers a uniform API for CPU schedulers.  It is possible to choose
>   from a number of schedulers at boot and it should be easy to add more.
>  -The SEDF, BVT, and Credit schedulers are part of the normal Xen
>  -distribution.  BVT and SEDF will be going away and their use should be
>  +The SEDF and Credit schedulers are part of the normal Xen
>  +distribution.  SEDF will be going away and its use should be
>   avoided once the credit scheduler has stabilized and become the default.
>   The Credit scheduler provides proportional fair shares of the
>   host's CPUs to the running domains. It does this while transparently
> 
> I'm up for sending a series to that effect, but I'd be interested in
> your opinion on what's the best way to do so.
> 
> Looking at the commit referred above, it seems like a scheduler can just
> disappear which, as far as Xen and libxc are concerned, does seem ok to
> me. Is that so?
> 
> I'm less sure of libxl, because of the API stability claims. It looks
> like this is all about (as there are not scheduler specific API
> functions, which is good) this:
> 
>  # Consistent with values defined in domctl.h
>  # Except unknown which we have made up
>  libxl_scheduler = Enumeration("scheduler", [
>      (0, "unknown"),
>      (4, "sedf"),
>      (5, "credit"),
>      (6, "credit2"),
>      (7, "arinc653"),
>      (8, "rtds"),
>      ])
> 
> The solutions I see are:
>  1. get rid of the field. This does not sound ideal from an API
>     stability point of view;
>  2. keep the field 'physically', but return warnings and errors when it 
>     is used. This is a change in behavior, so also not really stable
>     (but, hey, the scheduler is going away, the behavior will change,
>     one way or another!)

I think this is probably the best option.

>  3. RTDS has a really similar interface and, to a certain extent, a 
>     similar behavior too. Would it make sense to, upon suitable
>     warnings, of course, convert the requests within libxl, i.e.,
>     when someone asks for SEDF, we give him RTDS?
> 
> Honestly, I'd prefer 2, and I don't much like 3. However, it really
> seems that 3 gives us a way to keep most of our promises about API
> stability... Thoughts?
> 
> About domain_sched_params:
> 
>  libxl_domain_sched_params = Struct("domain_sched_params",[
>      ("sched",        libxl_scheduler),
>      ("weight",       integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT'}),
>      ("cap",          integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_CAP_DEFAULT'}),
>      ("period",       integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT'}),
>      ("slice",        integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT'}),
>      ("latency",      integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_LATENCY_DEFAULT'}),
>      ("extratime",    integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT'}),
>      ("budget",       integer, {'init_val': 'LIBXL_DOMAIN_SCHED_PARAM_BUDGET_DEFAULT'}),
>      ])
> 
> SEDF now uses 'weight', 'period', 'slice', 'latency' and 'extratime'. If
> considering option 3, RTDS:
>  - does not use 'weight' right now, but we can use it as an alternative
>    way to set 'budget', which is not far from the way SEDF uses it;
>  - uses 'period';
>  - does not use 'slice', but that is just a synonym for 'budget';
>  - does not use 'latency' right now; we can use it as an alternative way
>    to set 'period', but that would be a bit different from what SEDF
>    does with it;
>  - does not use 'extratime' for now, but will, at some point, in a very
>    similar way to how SEDF uses it.
> 
> Oh and, whatever route we decide to go for, is it perhaps necessary that
> we do something like deprecate it for one release (4.6), e.g., by
> printing a warning saying that <<SEDF is still here now, but is
> deprecated and you won't find it in the next release>>, and then do the
> actual removal/conversion in 4.7?

I think given that it's been "going away" for 9 years, we should
probably just remove it and put it back if people complain.  (And if
they really really can't use RTDS instead.)

 -George

  reply	other threads:[~2015-05-21 12:46 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-21 12:39 Plans for the SEDF scheduler Dario Faggioli
2015-05-21 12:45 ` George Dunlap [this message]
2015-05-21 15:01   ` Ian Campbell
2015-05-21 12:53 ` Wei Liu
2015-05-21 13:00   ` Dario Faggioli
2015-05-22  5:48 ` Meng Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=555DD384.8040905@eu.citrix.com \
    --to=george.dunlap@eu.citrix.com \
    --cc=Ian.Campbell@eu.citrix.com \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=Wei.Liu2@citrix.com \
    --cc=dario.faggioli@citrix.com \
    --cc=josh.whitehead@dornerworks.com \
    --cc=keir@xen.org \
    --cc=lars.kurth@citrix.com \
    --cc=robert.vanvossen@dornerworks.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xisisu@gmail.com \
    --cc=xumengpanda@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.