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

Re: [Xen-devel] [RFC PATCH 0/4] Repurpose SEDF Scheduler for Real-time use

Hi everyone again,

I had the chance to give a close look to the patches, so here I am. :-)

First of all, thanks again Josh, Robbie, and Nate for this work!
That being said...

On ven, 2014-06-13 at 15:58 -0400, Josh Whitehead wrote:
> With the increased interest in embedded Xen, there is a need for a suitable
> real-time scheduler.  The arinc653 scheduler currently only supports a
> single core and has limited niche appeal, while the sedf scheduler is
> widely consider deprecated and is currently a mess.  This patchset
> repurposes the current sedf scheduler and adds a more capable and robust 
> real-time scheduler suitable for embedded use to the Xen repertoire.
That describes our current situation quite well. :-)

> Repurposing of the sedf scheduler was accomplished by implementing the
> Constant Bandwidth Server (CBS) algorithm (originally proposed by Dario
> Faggioli) which is capable of properly handling mixed soft real-time and
> hard real-time tasks (domains/vcpus) on the same system.
So, as agreed via conf-call, and as implied by what you say yourself
below (when mentioning the TBS), the solution is to have a working
global EDF framework, on top of which we can potentially put multiple
and different budgetting algorithms.

For that exact reason, I'm not sure I'd go all the way down to SCHED_CBS
and sched_cbs.c. In fact, even with the above 'big plan' in mind, I
don't think renaming/substituting SEDF is that important at this stage.

What we have now in SEDF is, basically, an outdated implementation of
EDF with an hackish budgetting scheme on top of it.
What this patchset is meant at is (although in RFC status) implementing
EDF with a well known and working budgetting scheme on top of it.

Therefore, I don't think we need to go through the renaming of the c
files, the functions, the parameters, etc... just change the

Consider that, at least at the libxl level, we committed to maintain a
stable and compile time backward compatible API. Going through something
like this would require a lot of trickery, in order to make the above

The great value I see in this series is that it is the first step in
turning SEDF into something useful, and you don't need to change the
name and kill the parameters for doing that.

In fact, about the parameters:
 * you' re adding a 'soft' param, but I think the existing 'extra' can
   be used to mean just that, can't it? It seems to me they've got a
   pretty compatible meaning, at least up to a certain extent (i.e.,
   when extra=1 is used on a domain with a !0 budget and slice).
 * 'latency', certainly there is no such thing as scaling U in the
   original CBS algorithm, but it won't be too difficult to do that.
   Perhaps as a subsequent step, i.e., stick a TODO about it around, for
   now, but just don't kill it!
 * 'weight' is the only one I'm afraid about, as that was meant to be
   useful when SEDF was the default scheduler (so used for general
   purpose workloads as well). That's why I'm asking other people what
   the constraints of API stability are in this situation. However, even
   if we en up being stuck with it, I've got a few ideas on how to use
   it in a similar enough way to the original meaning. I.e., I'd
   recommend the same. Ignore it and put TODOs around, but don't get rid
   of it.

I won't comment on the details of the algorithm here. However, something
similar to what you wrote in this cover letter, would be well suited for
a document in docs/misc. I can contribute and help make it as clear and
easy to understand as possible, of course.

Also, something similar to what you put in the "USAGE INSTRUCTIONS",
still of the cover letter, would fit very well in, still in docs/misc,
the equivalent of sedf_scheduler_mini-HOWTO.txt (whether by replacing
the content of such file, or killing it and creating a new one, I still
don't know).

> Though useful in its current state, there are a few additional features 
> and modifications we'd like to make in the future:
> 1) More efficient multiprocessor support that makes better use of
> available cores.  This would likely be accomplished through the use of a
> global EDF queue for all available PCPUs.  Though the current version
> does recognize and use multiple cores it takes some creative assigning
> and pinning by the user to use them efficiently, the goal of this change
> would be to have this load balancing occur seamlessly and automatically.
Yep, we do need this. However, I agree that we want an incremental
approach. What I was hoping was that, for turning the scheduler from
local to global, we could borrow a few ideas from credit2 (e.g., 1
runqueue per socket), and a few code from RT-Xen (and those guys are
also close to submitting patches here on xen-devel).

> 2) VCPU level parameter assignments instead of the current domain level
> assignments.  This would allow for more accurate and efficient division of
> resources amongst domains and cpu pools.  Currently all vcpus within a
> domain must use the same period and budget parameters.
That would be good. It would be even better to go fully hierarchical,
but yes, let's leave this to a later development.

> 3) Alternate scheduling algorithms (e.g. Total Bandwidth Server) could now
> be implemented in this scheduler with relative ease given the
> simplification of the underlying EDF scheduler that was done as part of
> this patchset.  This would further expand the capabilities of Xen in
> embedded real-time systems and give developers more options to fit their
> individual system requirements.
Indeed. And I certainly am all for providing different server algorithms
and implementations (as said above already). At some point, and perhaps
off-list (as it may be too specific here), someone of you guys will have
to explain what it is that you like in TBS better than in CBS. I mean,
as far as I remember, CBS is an improved version of TBS, so why stick
with the old one when we can have the new one... or is it that TBS is
part of some standard/certification/whatever?

Thanks again and Regards,

<<This happens because I choose it to happen!>> (Raistlin Majere)
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)

Attachment: signature.asc
Description: This is a digitally signed message part

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.