From: Ingo Molnar <mingo@elte.hu>
To: Nicholas Miell <nmiell@comcast.net>
Cc: Mike Galbraith <efault@gmx.de>, Con Kolivas <kernel@kolivas.org>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-kernel@vger.kernel.org
Subject: [patch] CFS scheduler: Completely Fair Scheduler / CONFIG_SCHED_FAIR
Date: Sat, 17 Mar 2007 10:42:23 +0100 [thread overview]
Message-ID: <20070317094223.GA28330@elte.hu> (raw)
In-Reply-To: <1174119830.3144.22.camel@entropy>
* Nicholas Miell <nmiell@comcast.net> wrote:
> > this regression has to be fixed before RSDL can be merged, simply
> > because it is a pretty negative effect that goes beyond any of the
> > visible positive improvements that RSDL brings over the current
> > scheduler. If it is better to fix X, then X has to be fixed _first_,
> > at least in form of a prototype patch that can be _tested_, and then
> > the result has to be validated against RSDL.
>
> RSDL is, above all else, fair. Predictably so.
SCHED_BATCH (an existing feature of the current scheduler) is even
fairer and even more deterministic than RSDL, because it has _zero_
heuristics.
so how about the patch below (against current -git), which adds the
"CFS, Completely Fair Scheduler" feature? With that you could test your
upcoming X fixes. (it also adds /proc/sys/kernel/sched_fair so that you
can compare the fair scheduler against the vanilla scheduler.) It's very
simple and unintrusive:
4 files changed, 28 insertions(+)
furthermore, this is just the first step: if CONFIG_SCHED_FAIR becomes
widespread amongst distributions then we can remove the interactivity
estimator code altogether, and simplify the code quite a bit.
( NOTE: more improvements are possible as well: right now most
interactivity calculations are still done even if CONFIG_SCHED_FAIR is
enabled - that could be improved upon. )
Ingo
------------------------------>
Subject: [patch] CFS scheduler: Completely Fair Scheduler
From: Ingo Molnar <mingo@elte.hu>
add the CONFIG_SCHED_FAIR option (default: off): this turns the Linux
scheduler into a completely fair scheduler for SCHED_OTHER tasks: with
perfect roundrobin scheduling, fair distribution of timeslices combined
with no interactivity boosting and no heuristics.
a /proc/sys/kernel/sched_fair option is also available to turn
this behavior on/off.
if this option establishes itself amongst leading distributions then we
could in the future remove the interactivity estimator altogether.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
include/linux/sched.h | 1 +
kernel/Kconfig.preempt | 9 +++++++++
kernel/sched.c | 8 ++++++++
kernel/sysctl.c | 10 ++++++++++
4 files changed, 28 insertions(+)
Index: linux/include/linux/sched.h
===================================================================
--- linux.orig/include/linux/sched.h
+++ linux/include/linux/sched.h
@@ -119,6 +119,7 @@ extern unsigned long avenrun[]; /* Load
load += n*(FIXED_1-exp); \
load >>= FSHIFT;
+extern unsigned int sched_fair;
extern unsigned long total_forks;
extern int nr_threads;
DECLARE_PER_CPU(unsigned long, process_counts);
Index: linux/kernel/Kconfig.preempt
===================================================================
--- linux.orig/kernel/Kconfig.preempt
+++ linux/kernel/Kconfig.preempt
@@ -63,3 +63,12 @@ config PREEMPT_BKL
Say Y here if you are building a kernel for a desktop system.
Say N if you are unsure.
+config SCHED_FAIR
+ bool "Completely Fair Scheduler"
+ help
+ This option turns the Linux scheduler into a completely fair
+ scheduler. User-space workloads will round-robin fairly, and
+ they have to be prioritized using nice levels.
+
+ Say N if you are unsure.
+
Index: linux/kernel/sched.c
===================================================================
--- linux.orig/kernel/sched.c
+++ linux/kernel/sched.c
@@ -4040,6 +4040,10 @@ static inline struct task_struct *find_p
return pid ? find_task_by_pid(pid) : current;
}
+#ifdef CONFIG_SCHED_FAIR
+unsigned int sched_fair = 1;
+#endif
+
/* Actually do priority change: must hold rq lock. */
static void __setscheduler(struct task_struct *p, int policy, int prio)
{
@@ -4055,6 +4059,10 @@ static void __setscheduler(struct task_s
*/
if (policy == SCHED_BATCH)
p->sleep_avg = 0;
+#ifdef CONFIG_SCHED_FAIR
+ if (policy == SCHED_NORMAL && sched_fair)
+ p->sleep_avg = 0;
+#endif
set_load_weight(p);
}
Index: linux/kernel/sysctl.c
===================================================================
--- linux.orig/kernel/sysctl.c
+++ linux/kernel/sysctl.c
@@ -205,6 +205,16 @@ static ctl_table root_table[] = {
};
static ctl_table kern_table[] = {
+#ifdef CONFIG_SCHED_FAIR
+ {
+ .ctl_name = CTL_UNNUMBERED,
+ .procname = "sched_fair",
+ .data = &sched_fair,
+ .maxlen = sizeof(int),
+ .mode = 0644,
+ .proc_handler = &proc_dointvec,
+ },
+#endif
{
.ctl_name = KERN_PANIC,
.procname = "panic",
next prev parent reply other threads:[~2007-03-17 9:43 UTC|newest]
Thread overview: 197+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-04 20:35 [ANNOUNCE] RSDL completely fair starvation free interactive cpu scheduler Al Boldi
2007-03-04 21:49 ` Con Kolivas
[not found] ` <45EB45F7.3050208@simon.arlott.org.uk>
2007-03-04 22:27 ` Con Kolivas
2007-03-05 18:29 ` Simon Arlott
2007-03-05 21:36 ` Con Kolivas
2007-03-04 23:13 ` Willy Tarreau
2007-03-04 23:58 ` Con Kolivas
2007-03-05 0:10 ` [ck] " jos poortvliet
2007-03-05 1:09 ` Gene Heskett
[not found] ` <200703050834.45712.a1426z@gawab.com>
[not found] ` <20070305060732.GQ30401@nysv.org>
2007-03-05 11:59 ` [ck] " Al Boldi
2007-03-05 12:29 ` Con Kolivas
[not found] ` <200703052123.01095.a1426z@gawab.com>
2007-03-05 22:10 ` Con Kolivas
2007-03-06 8:42 ` Xavier Bestel
2007-03-06 15:15 ` Al Boldi
2007-03-11 18:11 ` Al Boldi
2007-03-11 21:52 ` Con Kolivas
2007-03-11 22:12 ` Con Kolivas
2007-03-12 4:42 ` Al Boldi
2007-03-12 4:53 ` Con Kolivas
2007-03-12 11:26 ` Al Boldi
2007-03-12 12:52 ` Con Kolivas
2007-03-12 14:14 ` Al Boldi
2007-03-12 14:58 ` [ck] " jos poortvliet
2007-03-12 16:37 ` michael chang
2007-03-12 17:41 ` Al Boldi
2007-03-12 18:05 ` Con Kolivas
2007-03-12 18:47 ` [ck] " jos poortvliet
2007-03-12 18:58 ` Antonio Vargas
2007-03-19 10:47 ` Helge Hafting
2007-03-18 1:30 ` Bill Davidsen
2007-03-18 10:50 ` [ck] " jos poortvliet
2007-03-13 15:31 ` [PATCH] [RSDL-0.30] sched: rsdl improve latencies with differential nice Con Kolivas
2007-03-13 16:03 ` [PATCH] [RSDL-0.30] sched: rsdl improve latencies with differential nice -1 Con Kolivas
2007-03-13 16:08 ` Con Kolivas
2007-03-13 20:58 ` Con Kolivas
2007-03-13 23:08 ` RSDL development plans Con Kolivas
2007-03-16 12:25 ` Con Kolivas
2007-03-16 13:40 ` RSDL v0.31 Con Kolivas
2007-03-16 15:34 ` Mike Galbraith
2007-03-16 21:13 ` Con Kolivas
2007-03-16 22:30 ` Mike Galbraith
2007-03-16 23:05 ` [ck] " Dirk Schoebel
2007-03-17 4:24 ` Nicholas Miell
2007-03-17 5:56 ` Mike Galbraith
2007-03-17 6:08 ` Mike Galbraith
2007-03-17 13:56 ` Ed Tomlinson
2007-03-18 19:37 ` Lee Revell
2007-03-18 19:55 ` Mike Galbraith
2007-03-18 22:45 ` Szonyi Calin
2007-03-19 2:27 ` David Schwartz
2007-03-19 6:21 ` Mike Galbraith
2007-03-19 6:59 ` Willy Tarreau
2007-03-17 6:26 ` Nicholas Miell
2007-03-17 7:11 ` Mike Galbraith
2007-03-17 7:25 ` William Lee Irwin III
2007-03-17 7:29 ` Nicholas Miell
2007-03-17 11:48 ` Gene Heskett
2007-03-17 7:45 ` Ingo Molnar
2007-03-17 7:44 ` David Lang
2007-03-17 8:46 ` Mike Galbraith
2007-03-17 14:09 ` [ck] " Mark Glines
2007-03-17 14:33 ` Mike Galbraith
2007-03-17 14:54 ` Mark Glines
2007-03-17 14:58 ` Mike Galbraith
2007-03-17 8:23 ` Nicholas Miell
2007-03-17 9:42 ` Ingo Molnar [this message]
2007-03-17 8:41 ` Serge Belyshev
2007-03-17 9:48 ` Con Kolivas
2007-03-17 9:58 ` Mike Galbraith
2007-03-17 10:49 ` Mike Galbraith
2007-03-17 12:05 ` Gene Heskett
2007-03-17 13:36 ` Mike Galbraith
2007-03-17 17:03 ` Gene Heskett
2007-03-17 17:37 ` Mike Galbraith
2007-03-17 18:23 ` [ck] " Kacper Wysocki
2007-03-17 18:45 ` Mike Galbraith
2007-03-17 13:58 ` michael chang
2007-03-17 20:55 ` Al Boldi
2007-03-18 6:17 ` Mike Galbraith
2007-03-18 6:47 ` Kasper Sandberg
2007-03-18 7:08 ` Mike Galbraith
2007-03-18 7:22 ` [ck] " Radoslaw Szkodzinski
2007-03-18 7:38 ` Mike Galbraith
2007-03-18 8:04 ` Mike Galbraith
2007-03-18 8:20 ` jimmy bahuleyan
2007-03-18 8:34 ` Mike Galbraith
2007-03-18 9:57 ` Kasper Sandberg
2007-03-18 13:57 ` Avuton Olrich
2007-03-19 20:47 ` Bill Davidsen
2007-03-20 10:19 ` jos poortvliet
2007-03-21 8:58 ` Kasper Sandberg
2007-03-18 15:44 ` Radoslaw Szkodzinski
2007-03-18 16:09 ` jos poortvliet
2007-03-19 16:07 ` Mark Lord
2007-03-19 16:26 ` Xavier Bestel
2007-03-19 16:36 ` Mark Lord
2007-03-19 16:43 ` Xavier Bestel
2007-03-20 3:11 ` Linus Torvalds
2007-03-20 6:11 ` Willy Tarreau
2007-03-20 8:03 ` Mike Galbraith
2007-03-21 14:57 ` Mike Galbraith
2007-03-21 16:02 ` Peter Zijlstra
2007-03-21 17:06 ` Mike Galbraith
2007-03-22 7:07 ` Mike Galbraith
2007-03-22 9:18 ` Ingo Molnar
2007-03-22 9:34 ` Mike Galbraith
2007-03-22 9:41 ` Mike Galbraith
2007-03-22 22:03 ` Con Kolivas
2007-03-22 22:50 ` Con Kolivas
2007-03-23 4:39 ` Mike Galbraith
2007-03-23 5:59 ` Con Kolivas
2007-03-23 6:11 ` Mike Galbraith
2007-03-23 12:17 ` Mike Galbraith
[not found] ` <20070321161147.54c7a727@localhost>
2007-03-21 17:07 ` Mike Galbraith
2007-03-22 4:49 ` Willy Tarreau
2007-03-22 7:14 ` Mike Galbraith
2007-03-20 9:03 ` Xavier Bestel
2007-03-20 12:31 ` Artur Skawina
2007-03-20 19:16 ` Artur Skawina
2007-03-21 7:50 ` Ingo Molnar
2007-03-21 10:43 ` David Schwartz
2007-03-28 23:37 ` Bill Davidsen
2007-03-29 7:10 ` David Schwartz
2007-03-29 7:34 ` Nick Piggin
2007-03-20 15:31 ` Linus Torvalds
2007-03-20 18:08 ` Al Boldi
2007-03-21 8:22 ` Keith Duthie
2007-03-28 23:43 ` Bill Davidsen
2007-03-20 10:26 ` [ck] " jos poortvliet
2007-03-20 13:22 ` Mark Lord
2007-03-20 15:16 ` Ray Lee
2007-03-20 15:20 ` Mark Lord
2007-03-21 8:55 ` Kasper Sandberg
2007-03-19 20:53 ` Al Boldi
2007-03-20 19:50 ` Artur Skawina
2007-03-21 4:15 ` Al Boldi
2007-03-21 17:24 ` Artur Skawina
2007-03-19 16:03 ` Mark Lord
2007-03-17 11:49 ` is RSDL an "unfair" scheduler too? Ingo Molnar
2007-03-17 12:02 ` Con Kolivas
2007-03-17 12:23 ` [ck] " jos poortvliet
2007-03-17 17:31 ` David Schwartz
2007-03-17 12:28 ` Ingo Molnar
2007-03-17 12:43 ` Con Kolivas
2007-03-17 16:34 ` Ingo Molnar
2007-03-18 3:23 ` Bill Davidsen
2007-03-18 2:13 ` Bill Davidsen
2007-03-18 3:20 ` Kasper Sandberg
2007-03-18 5:37 ` Mike Galbraith
2007-03-18 10:58 ` [ck] " jos poortvliet
2007-03-17 12:15 ` jos poortvliet
2007-03-17 20:41 ` Avi Kivity
2007-03-18 1:25 ` William Lee Irwin III
2007-03-18 1:32 ` Linus Torvalds
2007-03-18 5:24 ` Willy Tarreau
2007-03-18 5:55 ` Avi Kivity
2007-03-19 2:27 ` David Schwartz
2007-03-19 13:27 ` Radoslaw Szkodzinski
2007-03-19 18:30 ` David Lang
2007-03-19 15:25 ` Avi Kivity
2007-03-19 16:06 ` Helge Hafting
2007-03-19 16:37 ` Avi Kivity
2007-03-18 6:09 ` Bill Huey
2007-03-18 6:37 ` Mike Galbraith
2007-03-18 7:35 ` Bill Huey
2007-03-19 21:14 ` Bill Davidsen
2007-03-18 6:26 ` Mike Galbraith
2007-03-18 6:54 ` [ck] " Radoslaw Szkodzinski
2007-03-18 7:58 ` Willy Tarreau
2007-03-18 8:45 ` Avi Kivity
2007-03-18 5:00 ` Avi Kivity
2007-03-17 15:13 ` RSDL v0.31 Mark Hahn
2007-03-17 17:22 ` Stephen Clark
2007-03-19 15:06 ` Chris Friesen
2007-03-17 7:56 ` Ingo Molnar
2007-03-17 11:07 ` [ck] " jos poortvliet
2007-03-17 12:44 ` Ingo Molnar
2007-03-17 13:44 ` jos poortvliet
2007-03-17 14:04 ` [ck] " Ed Tomlinson
2007-03-17 14:32 ` Rik van Riel
2007-03-17 14:43 ` Mike Galbraith
2007-03-17 15:39 ` Ingo Molnar
2007-03-16 17:12 ` AshMilsted
2007-03-16 17:41 ` Gabriel C
2007-03-16 21:55 ` Al Boldi
2007-03-17 2:51 ` Con Kolivas
2007-03-17 4:40 ` Al Boldi
2007-03-17 4:57 ` Con Kolivas
2007-03-17 5:15 ` Gene Heskett
2007-03-17 13:50 ` Ed Tomlinson
2007-03-17 16:12 ` Al Boldi
2007-03-16 13:42 ` RSDL development plans Mike Galbraith
2007-03-16 13:59 ` Con Kolivas
2007-03-16 14:07 ` Mike Galbraith
2007-03-14 9:13 ` [PATCH] [RSDL-0.30] sched: rsdl improve latencies with differential nice Mike Galbraith
2007-03-14 9:25 ` Con Kolivas
2007-03-14 9:42 ` Mike Galbraith
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=20070317094223.GA28330@elte.hu \
--to=mingo@elte.hu \
--cc=akpm@linux-foundation.org \
--cc=efault@gmx.de \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nmiell@comcast.net \
--cc=torvalds@linux-foundation.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.