From: Fabio Checconi <fchecconi@gmail.com>
To: mingo@elte.hu, a.p.zijlstra@chello.nl
Cc: linux-kernel@vger.kernel.org
Subject: [RFC][PATCH 0/8] Use EDF to throttle RT task groups
Date: Mon, 15 Jun 2009 20:55:43 +0200 [thread overview]
Message-ID: <cover.1245092261.git.fabio@helm.retis> (raw)
This patchset introduces a group level EDF scheduler to extend the
current throttling mechanism, in order to make it support generic
period assignments. With this patch, the rt_runtime and rt_period
parameters can be used to specify arbitrary CPU reservations for
RT tasks.
The first two patches fix two problems of the current implementation.
This is an early RFC, I'm interested in having an idea of what people
think about this feature, if it's worth working on it, what can be
improved in the design, etc.
The main design issues involved:
- It is no more possible to specify RUNTIME_INF for a task group
when throttling is enabled. Rationale: supporting both throttled
and unthrottled groups would have required too much extra complexity
(I didn't find anything simpler than two parallel runqueues, one for
throttled and one for unthrottled groups).
- Since it is not easy to mix tasks and groups on the same scheduler
queue (tasks have no deadlines), the bandwidth reserved to the tasks
in a group is controlled with two additional cgroup attributes:
rt_task_runtime_us and rt_task_period_us. These attrinutes control,
within a cgroup, how much bandwidth is reserved to the tasks it
contains.
- Shared resources are still handled using boosting. When a group
contains a task inside a critical section it is scheduled according
the highest priority among the ones of the tasks it contains.
In this way, the same group has two modes: when it is not boosted
it is scheduled according to its deadline; when it is boosted, it
is scheduled according its priority. Boosted groups are always
favored over non-boosted ones.
- The old priority array is now gone. To use only a single data
structure for entities using both priorities and deadlines (due
to boosting), the only possible choice was to use an rb-tree;
the function used to order the keys takes into account the
prioritization described above (boosted tasks, ordered by
priority are favored to non-boosted tasks, ordered by increasing
deadline).
- Given that the various rt_rq's belonging to the same task group
are activated independently, there is the need of a timer per
each rt_rq.
The patchset is against sched-devel, and (temporarily) depends on
CONFIG_RT_GROUP_SCHED.
Any kind of feedback is welcome.
Fabio Checconi (8):
Fix rt_rq->pushable_tasks initialization in init_rt_rq()
Fix hrtick handling
Replace struct prio_array with an RB tree
Remove the balancing logic
Use EDF to throttle RT tasks hierarchically
Modify the curr/next priority tracking
Reprogram timers only when necessary
Use hrtick when available
include/linux/init_task.h | 1 -
include/linux/sched.h | 2 +-
kernel/sched.c | 553 +++++++++++++++++++++++++------------
kernel/sched_debug.c | 4 +-
kernel/sched_rt.c | 672 +++++++++++++++++++++++++++------------------
5 files changed, 781 insertions(+), 451 deletions(-)
next reply other threads:[~2009-06-15 18:54 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-15 18:55 Fabio Checconi [this message]
2009-06-15 18:56 ` [PATCH 1/8] Fix rt_rq->pushable_tasks initialization in init_rt_rq() Fabio Checconi
2009-07-09 10:43 ` Peter Zijlstra
2009-07-10 10:41 ` [tip:sched/urgent] sched: " tip-bot for Fabio Checconi
2009-06-15 19:05 ` [PATCH 2/8] Fix hrtick handling Fabio Checconi
2009-07-09 10:42 ` Peter Zijlstra
2009-06-15 19:06 ` [PATCH 3/8] Replace struct prio_array with an RB tree Fabio Checconi
2009-06-15 19:06 ` [PATCH 4/8] Remove the balancing logic Fabio Checconi
2009-06-15 19:08 ` [PATCH 5/8] Use EDF to throttle RT tasks hierarchically Fabio Checconi
2009-06-15 19:08 ` [PATCH 6/8] Modify the curr/next priority tracking Fabio Checconi
2009-06-15 19:09 ` [PATCH 7/8] Reprogram timers only when necessary Fabio Checconi
2009-06-15 19:09 ` [PATCH 8/8] Use hrtick when available Fabio Checconi
2009-07-09 10:36 ` [RFC][PATCH 0/8] Use EDF to throttle RT task groups Peter Zijlstra
2009-07-09 13:51 ` Fabio Checconi
2009-07-15 7:50 ` Peter Zijlstra
2009-07-15 12:08 ` Fabio Checconi
2009-07-15 14:25 ` Peter Zijlstra
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=cover.1245092261.git.fabio@helm.retis \
--to=fchecconi@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox