linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wes Janzen <superchkn@sbcglobal.net>
To: Con Kolivas <kernel@kolivas.org>
Cc: linux kernel mailing list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] O6int for interactivity
Date: Wed, 16 Jul 2003 22:05:13 -0500	[thread overview]
Message-ID: <3F161269.8040704@sbcglobal.net> (raw)
In-Reply-To: <200307170030.25934.kernel@kolivas.org>

This is much better than 2.5.75-mm3 with your patch.  XMMS seems to work 
well, and applications in X are much more responsive which is more 
important to me anyway.  Part of the sluggishness with 2.5.75-mm3 was 
that the radeon DRM code apparently had problems.  X was using 20-30% of 
the CPU time which probably contributed to the laggy feeling.  Still 
even though 2.5.73-mm3 was crippled, this is also better than any of the 
other 2.5.7x patched kernels I've tried.

Windows are pretty slow to redraw under load though sometimes.  If I 
have gimp scaling an image on workspace 2 and then switch back to 1 it 
can take up to 7 seconds to redraw Mozilla or a terminal.  This seems to 
get better though the longer X has been running, once X has been up for 
~15 minutes I can't get it to occur anymore.

XMMS still skips when my xscreensaver changes to a different 
screensaver, but it's not as bad as before and I'm not expecting 
miracles.  I would rather a program start fast than take forever to 
start just to avoid stalling XMMS.

I'm running a K6-2 400 w/384MB.

I'll keep testing and let you know if I find any problems...

Thanks,

Wes

Con Kolivas wrote:

>O*int patches trying to improve the interactivity of the 2.5/6 scheduler for 
>desktops. It appears possible to do this without moving to nanosecond 
>resolution.
>
>This one makes a massive difference... Please test this to death.
>
>Changes:
>The big change is in the way sleep_avg is incremented. Any amount of sleep 
>will now raise you by at least one priority with each wakeup. This causes 
>massive differences to startup time, extremely rapid conversion to interactive 
>state, and recovery from non-interactive state rapidly as well (prevents X 
>stalling after thrashing around under high loads for many seconds).
>
>The sleep buffer was dropped to just 10ms. This has the effect of causing mild 
>round robinning of very interactive tasks if they run for more than 10ms. The 
>requeuing was changed from (unlikely()) to an ordinary if.. branch as this 
>will be hit much more now.
>
>MAX_BONUS as a #define was made easier to understand
>
>Idle tasks were made slightly less interactive to prevent cpu hogs from 
>becoming interactive on their very first wakeup.
>
>Con
>
>This patch-O6int-0307170012 applies on top of 2.6.0-test1-mm1 and can be found 
>here:
>http://kernel.kolivas.org/2.5
>
>and here:
>
>--- linux-2.6.0-test1-mm1/kernel/sched.c	2003-07-16 20:27:32.000000000 +1000
>+++ linux-2.6.0-testck1/kernel/sched.c	2003-07-17 00:13:24.000000000 +1000
>@@ -76,9 +76,9 @@
> #define MIN_SLEEP_AVG		(HZ)
> #define MAX_SLEEP_AVG		(10*HZ)
> #define STARVATION_LIMIT	(10*HZ)
>-#define SLEEP_BUFFER		(HZ/20)
>+#define SLEEP_BUFFER		(HZ/100)
> #define NODE_THRESHOLD		125
>-#define MAX_BONUS		((MAX_USER_PRIO - MAX_RT_PRIO) * PRIO_BONUS_RATIO / 100)
>+#define MAX_BONUS		(40 * PRIO_BONUS_RATIO / 100)
> 
> /*
>  * If a task is 'interactive' then we reinsert it in the active
>@@ -399,7 +399,7 @@ static inline void activate_task(task_t 
> 		 */
> 		if (sleep_time > MIN_SLEEP_AVG){
> 			p->avg_start = jiffies - MIN_SLEEP_AVG;
>-			p->sleep_avg = MIN_SLEEP_AVG * (MAX_BONUS - INTERACTIVE_DELTA - 1) /
>+			p->sleep_avg = MIN_SLEEP_AVG * (MAX_BONUS - INTERACTIVE_DELTA - 2) /
> 				MAX_BONUS;
> 		} else {
> 			/*
>@@ -413,14 +413,10 @@ static inline void activate_task(task_t 
> 			p->sleep_avg += sleep_time;
> 
> 			/*
>-			 * Give a bonus to tasks that wake early on to prevent
>-			 * the problem of the denominator in the bonus equation
>-			 * from continually getting larger.
>+			 * Processes that sleep get pushed to a higher priority
>+			 * each time they sleep
> 			 */
>-			if ((runtime - MIN_SLEEP_AVG) < MAX_SLEEP_AVG)
>-				p->sleep_avg += (runtime - p->sleep_avg) *
>-					(MAX_SLEEP_AVG + MIN_SLEEP_AVG - runtime) *
>-					(MAX_BONUS - INTERACTIVE_DELTA) / MAX_BONUS / MAX_SLEEP_AVG;
>+			p->sleep_avg = (p->sleep_avg * MAX_BONUS / runtime + 1) * runtime / MAX_BONUS;
> 
> 			/*
> 			 * Keep a small buffer of SLEEP_BUFFER sleep_avg to
>@@ -1311,7 +1307,7 @@ void scheduler_tick(int user_ticks, int 
> 			enqueue_task(p, rq->expired);
> 		} else
> 			enqueue_task(p, rq->active);
>-	} else if (unlikely(p->prio < effective_prio(p))){
>+	} else if (p->prio < effective_prio(p)){
> 		/*
> 		 * Tasks that have lowered their priority are put to the end
> 		 * of the active array with their remaining timeslice
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/
>
>  
>


  parent reply	other threads:[~2003-07-17  2:50 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-16 14:30 [PATCH] O6int for interactivity Con Kolivas
2003-07-16 15:22 ` Felipe Alfaro Solana
2003-07-16 19:55   ` Marc-Christian Petersen
2003-07-16 17:08 ` Valdis.Kletnieks
2003-07-16 21:59 ` Wiktor Wodecki
2003-07-16 22:30   ` Con Kolivas
2003-07-16 22:12 ` Davide Libenzi
2003-07-17  0:33   ` Con Kolivas
2003-07-17  0:35     ` Davide Libenzi
2003-07-17  1:12       ` Con Kolivas
2003-07-17  0:48     ` Wade
2003-07-17  1:15       ` Con Kolivas
2003-07-17  1:27         ` Eugene Teo
2003-07-17  3:05 ` Wes Janzen [this message]
2003-07-17  9:05 ` Alex Riesen
2003-07-17  9:14   ` Con Kolivas
2003-07-18  7:38     ` Alex Riesen
     [not found]       ` <Pine.LNX.4.44.0307251628500.26172-300000@localhost.localdomain>
2003-07-25 19:40         ` Alex Riesen
     [not found] ` <Pine.LNX.4.55.0307161241280.4787@bigblue.dev.mcafeelabs.co m>
2003-07-18  5:38   ` Mike Galbraith
2003-07-18  6:34     ` Nick Piggin
2003-07-18 10:18       ` Mike Galbraith
2003-07-18 10:31         ` Wiktor Wodecki
2003-07-18 10:43           ` Con Kolivas
2003-07-18 11:34             ` Wiktor Wodecki
2003-07-18 11:38               ` Nick Piggin
2003-07-19 10:59                 ` Wiktor Wodecki
2003-07-18 15:46           ` Mike Galbraith
2003-07-18 16:52             ` Davide Libenzi
2003-07-18 17:05               ` Davide Libenzi
2003-07-18 17:39                 ` Valdis.Kletnieks
2003-07-18 19:31                   ` Davide Libenzi
     [not found]                 ` <Pine.LNX.4.55.0307181038450.5608@bigblue.dev.mcafeelabs.co m>
2003-07-18 20:31                   ` Mike Galbraith
2003-07-18 20:38                     ` Davide Libenzi
     [not found]                 ` <Pine.LNX.4.55.0307181333520.5608@bigblue.dev.mcafeelabs.co m>
2003-07-19 17:04                   ` Mike Galbraith
2003-07-21  0:21                     ` Davide Libenzi
     [not found]                 ` <Pine.LNX.4.55.0307201715130.3548@bigblue.dev.mcafeelabs.co m>
2003-07-21  5:36                   ` Mike Galbraith
2003-07-21 12:39                   ` [NOTAPATCH] " Mike Galbraith
2003-07-21 17:13                     ` Mike Galbraith
2003-07-18 14:24         ` Con Kolivas
2003-07-18 15:50           ` Mike Galbraith
2003-07-18 13:46     ` Davide Libenzi
     [not found] ` <Pine.LNX.4.55.0307180630450.5077@bigblue.dev.mcafeelabs.co m>
2003-07-18 15:41   ` Mike Galbraith
     [not found] ` <Pine.LNX.4.55.0307180951050.5608@bigblue.dev.mcafeelabs.co m>
2003-07-18 18:49   ` Mike Galbraith
2003-07-16 20:20 Shane Shrybman

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=3F161269.8040704@sbcglobal.net \
    --to=superchkn@sbcglobal.net \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).