[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0708100037460.1817@scrub.home>
Date: Fri, 10 Aug 2007 01:14:04 +0200 (CEST)
From: Roman Zippel <zippel@...ux-m68k.org>
To: Ingo Molnar <mingo@...e.hu>
cc: Linus Torvalds <torvalds@...ux-foundation.org>,
Andi Kleen <andi@...stfloor.org>,
Mike Galbraith <efault@....de>,
Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org
Subject: Re: CFS review
Hi,
On Wed, 1 Aug 2007, Ingo Molnar wrote:
> just to make sure, how does 'top' output of the l + "lt 3" testcase look
> like now on your laptop? Yesterday it was this:
>
> 4544 roman 20 0 1796 520 432 S 32.1 0.4 0:21.08 lt
> 4545 roman 20 0 1796 344 256 R 32.1 0.3 0:21.07 lt
> 4546 roman 20 0 1796 344 256 R 31.7 0.3 0:21.07 lt
> 4547 roman 20 0 1532 272 216 R 3.3 0.2 0:01.94 l
>
> and i'm still wondering how that output was possible.
I disabled the jiffies logic and the result is still the same, so this
problem isn't related to resolution at all.
I traced it a little and what's happing is that the busy loop really only
gets little time, it only runs inbetween the timer tasks. When the timer
task is woken up __enqueue_sleeper() updates sleeper_bonus and a little
later when the busy loop is preempted __update_curr() is called a last
time and it's fully hit by the sleeper_bonus. So the timer tasks use less
time than they actually get and thus produce overflows, the busy loop OTOH
is punished and underflows.
So it seems my initial suspicion was right and this logic is dodgy, what
is it actually supposed to do? Why is some random task accounted with the
sleeper_bonus?
bye, Roman
PS: Can I still expect answer about all the other stuff?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists