mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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",

  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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome