All of lore.kernel.org
 help / color / mirror / Atom feed
From: Con Kolivas <kernel@kolivas.org>
To: Felipe Alfaro Solana <felipe_alfaro@linuxmail.org>
Cc: linux kernel mailing list <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH] O3int interactivity for 2.5.74-mm2
Date: Mon, 7 Jul 2003 13:19:57 +1000	[thread overview]
Message-ID: <200307071319.57511.kernel@kolivas.org> (raw)
In-Reply-To: <1057516609.818.4.camel@teapot.felipe-alfaro.com>

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

On Mon, 7 Jul 2003 04:36, Felipe Alfaro Solana wrote:
> On Sun, 2003-07-06 at 19:16, Con Kolivas wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Attached is an incremental patch against 2.5.74-mm2 with more
> > interactivity work. Audio should be quite resistant to skips with this,
> > and it should not induce further unfairness.
> >
> > Changes:
> > The sleep_avg buffer was not needed with the improved semantics in O2int
> > so it has been removed entirely as it created regressions in O2int.
> >
> > A small change to the idle detection code to only make tasks with enough
> > accumulated sleep_avg become idle.
> >
> > Minor cleanups and clarified code.
> >
> >
> > Other issues:
> > Jerky mouse with heavy page rendering in web browsers remains. This is a
> > different issue to the audio and will need some more thought.
> >
> > The patch is also available for download here:
> > http://kernel.kolivas.org/2.5
> >
> > Note for those who wish to get smooth X desktop feel now for their own
> > use, the granularity patch on that website will do wonders on top of
> > O3int, but a different approach will be needed for mainstream
> > consumption.
>
> I'm seeing extreme X starvation with this patch under 2.5.74-mm2 when
> starting a CPU hogger:
>
> 1. Start a KDE session.
> 2. Launch a Konsole
> 3. Launch Konqueror
> 4. Launch XMMS
> 5. Make XMMS play an MP3 file
> 6. On the Konsole terminal, run "while true; do a=2; done"
>
> When the "while..." is run, X starves completely for ~5 seconds (e.g.
> the mouse cursor doesn't respond to my input events). After those 5
> seconds, the mouse cursor goes jerky for a while (~2 seconds) and then
> the system gets responsive.

Aha!

Thanks to Felipe who picked this up I was able to find the one bug causing me 
grief. The idle detection code was allowing the sleep_avg to get to 
ridiculously high levels. This is corrected in the following replacement 
O3int patch. Note this fixes the mozilla issue too. Kick arse!!

Con

[-- Attachment #2: patch-O3int-0307071315 --]
[-- Type: text/x-diff, Size: 1635 bytes --]

--- linux-2.5.74/kernel/sched.c	2003-07-07 02:13:57.000000000 +1000
+++ linux-2.5.74-test/kernel/sched.c	2003-07-07 13:15:04.000000000 +1000
@@ -77,6 +77,7 @@
 #define MAX_SLEEP_AVG		(10*HZ)
 #define STARVATION_LIMIT	(10*HZ)
 #define NODE_THRESHOLD		125
+#define MAX_BONUS		((MAX_USER_PRIO - MAX_RT_PRIO) * PRIO_BONUS_RATIO / 100)
 
 /*
  * If a task is 'interactive' then we reinsert it in the active
@@ -306,7 +307,7 @@ static inline void normalise_sleep(task_
 {
 	unsigned long old_avg_time = jiffies - p->avg_start;
 
-	if (old_avg_time < MIN_SLEEP_AVG)
+	if (unlikely(old_avg_time < MIN_SLEEP_AVG))
 		return;
 
 	if (p->sleep_avg > MAX_SLEEP_AVG)
@@ -406,22 +407,19 @@ static inline void activate_task(task_t 
 		 */
 		if (runtime < MAX_SLEEP_AVG)
 			p->sleep_avg += (runtime - p->sleep_avg) * (MAX_SLEEP_AVG - runtime) *
-				(10 - INTERACTIVE_DELTA) / 10 / MAX_SLEEP_AVG;
+				(MAX_BONUS - INTERACTIVE_DELTA) / MAX_BONUS / MAX_SLEEP_AVG;
 
-		/*
-		 * Keep a buffer of 10% sleep_avg
-		 * to prevent short bursts of cpu activity from making
-		 * interactive tasks lose their bonus
-		 */
-		if (p->sleep_avg > MAX_SLEEP_AVG * 11/10)
-			p->sleep_avg = MAX_SLEEP_AVG * 11/10;
+		if (p->sleep_avg > MAX_SLEEP_AVG)
+			p->sleep_avg = MAX_SLEEP_AVG;
 
 		/*
 		 * Tasks that sleep a long time are categorised as idle and
 		 * get their static priority only
 		 */
-		if (sleep_time > MIN_SLEEP_AVG)
-			p->sleep_avg = runtime / 2;
+		if (sleep_time > MIN_SLEEP_AVG){
+			p->avg_start = jiffies - MIN_SLEEP_AVG;
+			p->sleep_avg = MIN_SLEEP_AVG / 2;
+		}
 
 		if (unlikely(p->avg_start > jiffies)){
 			p->avg_start = jiffies;

  parent reply	other threads:[~2003-07-07  3:04 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-06 17:16 [PATCH] O3int interactivity for 2.5.74-mm2 Con Kolivas
2003-07-06 18:36 ` Felipe Alfaro Solana
2003-07-06 21:14   ` Con Kolivas
2003-07-06 21:17   ` Con Kolivas
2003-07-07  3:19   ` Con Kolivas [this message]
2003-07-07  9:13     ` Felipe Alfaro Solana
2003-07-07  9:40     ` Mike Galbraith
2003-07-07 10:25       ` Con Kolivas
2003-07-07 14:06         ` Mike Galbraith
2003-07-07 14:10           ` Con Kolivas
2003-07-07 10:51     ` Nick Sanders
2003-07-07 12:19       ` Marc-Christian Petersen
2003-07-07 13:14         ` Con Kolivas
2003-07-08  0:31         ` Zwane Mwaikambo
2003-07-09 10:12           ` Marc-Christian Petersen
2003-07-09 10:13             ` Marc-Christian Petersen
2003-07-09 10:22             ` Con Kolivas
2003-07-09 10:23               ` Marc-Christian Petersen
2003-07-09 10:37                 ` Con Kolivas
2003-07-09 10:40                   ` Marc-Christian Petersen
2003-07-07 13:25     ` Helge Hafting
2003-07-08  6:35     ` Alex Riesen
2003-07-08  7:11     ` Szonyi Calin
2003-07-08  7:46       ` Davide Libenzi
2003-07-08  7:59         ` Con Kolivas
2003-07-08 15:12           ` Davide Libenzi
2003-07-08 20:54             ` Con Kolivas
2003-07-08 20:55               ` Davide Libenzi
2003-07-08  8:03       ` Con Kolivas
2003-07-10 16:27         ` Szonyi Calin
  -- strict thread matches above, loose matches on Subject: below --
2003-07-09 15:08 Luis Miguel Garcia

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=200307071319.57511.kernel@kolivas.org \
    --to=kernel@kolivas.org \
    --cc=akpm@osdl.org \
    --cc=felipe_alfaro@linuxmail.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 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.