public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 4/5] sched-dont_decrease_idle_sleep_avg.patch
@ 2006-01-13 10:23 Con Kolivas
  0 siblings, 0 replies; only message in thread
From: Con Kolivas @ 2006-01-13 10:23 UTC (permalink / raw)
  To: linux kernel mailing list; +Cc: Andrew Morton, Ingo Molnar

[-- Attachment #1: Type: text/plain, Size: 1566 bytes --]

We watch for tasks that sleep extended periods and don't allow one single
prolonged sleep period from elevating priority to maximum bonus to prevent
cpu bound tasks from getting high priority with single long sleeps. There
is a bug in the current code that also penalises tasks that already have
high priority. Correct that bug.

Signed-off-by: Con Kolivas <kernel@kolivas.org>

 kernel/sched.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

Index: linux-2.6.15/kernel/sched.c
===================================================================
--- linux-2.6.15.orig/kernel/sched.c
+++ linux-2.6.15/kernel/sched.c
@@ -747,14 +747,19 @@ static int recalc_task_prio(task_t *p, u
 	if (likely(sleep_time > 0)) {
 		/*
 		 * User tasks that sleep a long time are categorised as
-		 * idle and will get just interactive status to stay active &
-		 * prevent them suddenly becoming cpu hogs and starving
-		 * other processes.
+		 * idle. They will only have their sleep_avg increased to a
+		 * level that makes them just interactive priority to stay
+		 * active yet prevent them suddenly becoming cpu hogs and
+		 * starving other processes.
 		 */
 		if (p->mm && p->sleep_type != SLEEP_NONINTERACTIVE &&
 			sleep_time > INTERACTIVE_SLEEP(p)) {
-				p->sleep_avg = JIFFIES_TO_NS(MAX_SLEEP_AVG -
-						DEF_TIMESLICE);
+				unsigned long ceiling;
+
+				ceiling = JIFFIES_TO_NS(MAX_SLEEP_AVG -
+					DEF_TIMESLICE);
+				if (p->sleep_avg < ceiling)
+					p->sleep_avg = ceiling;
 		} else {
 
 			/*

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-01-13 10:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-13 10:23 [PATCH 4/5] sched-dont_decrease_idle_sleep_avg.patch Con Kolivas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox