From: Dario Faggioli <dario.faggioli@citrix.com>
To: Josh Whitehead <josh.whitehead@dornerworks.com>
Cc: Ian Campbell <ian.campbell@citrix.com>,
Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
George Dunlap <george.dunlap@eu.citrix.com>,
Ian Jackson <ian.jackson@eu.citrix.com>,
Robert VanVossen <robert.vanvossen@dornerworks.com>,
Xen-devel <xen-devel@lists.xen.org>,
Nate Studer <nate.studer@gmail.com>
Subject: Re: [RFC PATCH 0/4] Repurpose SEDF Scheduler for Real-time use
Date: Tue, 17 Jun 2014 16:44:40 +0200 [thread overview]
Message-ID: <1403016280.16864.139.camel@Solace> (raw)
In-Reply-To: <1402689488-3577-1-git-send-email-josh.whitehead@dornerworks.com>
[-- Attachment #1.1: Type: text/plain, Size: 6537 bytes --]
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:
> NEED:
> 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. :-)
> PROPOSED SOLUTION:
> 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
implementation!
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
true.
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).
> FUTURE DEVELOPMENT:
> 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,
Dario
--
<<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 #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 198 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2014-06-17 14:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-13 19:58 [RFC PATCH 0/4] Repurpose SEDF Scheduler for Real-time use Josh Whitehead
2014-06-13 19:58 ` [RFC PATCH 1/4] Implement cbs algorithm, remove extra queues, latency scaling, and weight support from sedf Josh Whitehead
2014-06-17 15:43 ` Dario Faggioli
2014-06-26 20:17 ` Joshua Whitehead
2014-06-28 2:19 ` Dario Faggioli
2014-06-17 16:06 ` Dario Faggioli
2014-06-26 20:18 ` Joshua Whitehead
2014-06-28 2:27 ` Dario Faggioli
2014-06-13 19:58 ` [RFC PATCH 2/4] Add cbs parameter support to xl tool stack, remove defunct sedf parameters Josh Whitehead
2014-06-17 15:02 ` Dario Faggioli
2014-06-26 19:55 ` Joshua Whitehead
2014-06-13 19:58 ` [RFC PATCH 3/4] Updated comments/variables to reflect cbs, fixed formatting and confusing comments/variables Josh Whitehead
2014-06-16 9:33 ` Jan Beulich
2014-06-16 15:29 ` George Dunlap
2014-06-17 16:11 ` Dario Faggioli
2014-06-17 17:28 ` Dario Faggioli
2014-06-25 20:13 ` Meng Xu
2014-06-26 21:24 ` Joshua Whitehead
2014-06-28 2:13 ` Dario Faggioli
2014-06-18 11:18 ` George Dunlap
2014-06-26 21:30 ` Joshua Whitehead
2014-06-26 21:23 ` Joshua Whitehead
2014-06-28 2:09 ` Dario Faggioli
2014-06-13 19:58 ` [RFC PATCH 4/4] Changed filenames with sedf to cbs to reflect the actual scheduler Josh Whitehead
2014-06-16 7:25 ` [RFC PATCH 0/4] Repurpose SEDF Scheduler for Real-time use Dario Faggioli
2014-06-17 14:44 ` Dario Faggioli [this message]
2014-06-26 19:53 ` Joshua Whitehead
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=1403016280.16864.139.camel@Solace \
--to=dario.faggioli@citrix.com \
--cc=george.dunlap@eu.citrix.com \
--cc=ian.campbell@citrix.com \
--cc=ian.jackson@eu.citrix.com \
--cc=josh.whitehead@dornerworks.com \
--cc=nate.studer@gmail.com \
--cc=robert.vanvossen@dornerworks.com \
--cc=stefano.stabellini@eu.citrix.com \
--cc=xen-devel@lists.xen.org \
/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.