LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
[not found] <20070221104747.3cb0da32.akpm@linux-foundation.org>
@ 2007-02-22 0:33 ` Thomas Gleixner
2007-02-22 7:46 ` Ingo Molnar
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Thomas Gleixner @ 2007-02-22 0:33 UTC (permalink / raw)
To: Andrew Morton
Cc: Ingo Molnar, john stultz, Roman Zippel, Mike Galbraith, Ken Chen,
balducci, LKML, Greg KH
Problem description at:
http://bugzilla.kernel.org/show_bug.cgi?id=8048
Commit b18ec80396834497933d77b81ec0918519f4e2a7
[PATCH] sched: improve migration accuracy
optimized the scheduler time calculations, but broke posix-cpu-timers.
The problem is that the p->last_ran value is not updated after a context
switch. So a subsequent call to current_sched_time() calculates with a
stale p->last_ran value, i.e. accounts the full time, which the task was
scheduled away.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c
+++ linux-2.6/kernel/sched.c
@@ -3566,7 +3566,7 @@ switch_tasks:
sched_info_switch(prev, next);
if (likely(prev != next)) {
- next->timestamp = now;
+ next->timestamp = next->last_ran = now;
rq->nr_switches++;
rq->curr = next;
++*switch_count;
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-02-22 0:33 ` [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value Thomas Gleixner
@ 2007-02-22 7:46 ` Ingo Molnar
2007-02-22 8:01 ` Thomas Gleixner
2007-02-22 9:16 ` Mike Galbraith
2007-03-01 23:45 ` Chuck Ebbert
2 siblings, 1 reply; 7+ messages in thread
From: Ingo Molnar @ 2007-02-22 7:46 UTC (permalink / raw)
To: Thomas Gleixner
Cc: Andrew Morton, john stultz, Roman Zippel, Mike Galbraith,
Ken Chen, balducci, LKML, Greg KH
* Thomas Gleixner <tglx@linutronix.de> wrote:
> The problem is that the p->last_ran value is not updated after a
> context switch. So a subsequent call to current_sched_time()
> calculates with a stale p->last_ran value, i.e. accounts the full
> time, which the task was scheduled away.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> sched_info_switch(prev, next);
> if (likely(prev != next)) {
> - next->timestamp = now;
> + next->timestamp = next->last_ran = now;
ouch! nice catch. Also for v2.6.20.2 i think. 2.6.19 should be
unaffected.
Acked-by: Ingo Molnar <mingo@elte.hu>
Ingo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-02-22 7:46 ` Ingo Molnar
@ 2007-02-22 8:01 ` Thomas Gleixner
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Gleixner @ 2007-02-22 8:01 UTC (permalink / raw)
To: Ingo Molnar
Cc: Andrew Morton, john stultz, Roman Zippel, Mike Galbraith,
balducci, LKML, Greg KH
On Thu, 2007-02-22 at 08:46 +0100, Ingo Molnar wrote:
> * Thomas Gleixner <tglx@linutronix.de> wrote:
>
> > The problem is that the p->last_ran value is not updated after a
> > context switch. So a subsequent call to current_sched_time()
> > calculates with a stale p->last_ran value, i.e. accounts the full
> > time, which the task was scheduled away.
> >
> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> > sched_info_switch(prev, next);
> > if (likely(prev != next)) {
> > - next->timestamp = now;
> > + next->timestamp = next->last_ran = now;
>
> ouch! nice catch. Also for v2.6.20.2 i think. 2.6.19 should be
> unaffected.
Yes, was introduced in 2.6.20 and definitely should hit the stable tree.
tglx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-02-22 0:33 ` [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value Thomas Gleixner
2007-02-22 7:46 ` Ingo Molnar
@ 2007-02-22 9:16 ` Mike Galbraith
2007-03-01 23:45 ` Chuck Ebbert
2 siblings, 0 replies; 7+ messages in thread
From: Mike Galbraith @ 2007-02-22 9:16 UTC (permalink / raw)
To: tglx
Cc: Andrew Morton, Ingo Molnar, john stultz, Roman Zippel, Ken Chen,
balducci, LKML, Greg KH
On Thu, 2007-02-22 at 01:33 +0100, Thomas Gleixner wrote:
> Problem description at:
> http://bugzilla.kernel.org/show_bug.cgi?id=8048
>
> Commit b18ec80396834497933d77b81ec0918519f4e2a7
> [PATCH] sched: improve migration accuracy
> optimized the scheduler time calculations, but broke posix-cpu-timers.
>
> The problem is that the p->last_ran value is not updated after a context
> switch. So a subsequent call to current_sched_time() calculates with a
> stale p->last_ran value, i.e. accounts the full time, which the task was
> scheduled away.
Oops, missed that. You could also remove the prev->last_ran assignment
just above your addition, and turn this into a negative cost bugfix :)
-Mike
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-02-22 0:33 ` [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value Thomas Gleixner
2007-02-22 7:46 ` Ingo Molnar
2007-02-22 9:16 ` Mike Galbraith
@ 2007-03-01 23:45 ` Chuck Ebbert
2007-03-02 0:27 ` Andrew Morton
2 siblings, 1 reply; 7+ messages in thread
From: Chuck Ebbert @ 2007-03-01 23:45 UTC (permalink / raw)
To: tglx
Cc: Andrew Morton, Ingo Molnar, john stultz, Roman Zippel,
Mike Galbraith, Ken Chen, balducci, LKML, Greg KH
Thomas Gleixner wrote:
> Problem description at:
> http://bugzilla.kernel.org/show_bug.cgi?id=8048
>
> Commit b18ec80396834497933d77b81ec0918519f4e2a7
> [PATCH] sched: improve migration accuracy
> optimized the scheduler time calculations, but broke posix-cpu-timers.
>
> The problem is that the p->last_ran value is not updated after a context
> switch. So a subsequent call to current_sched_time() calculates with a
> stale p->last_ran value, i.e. accounts the full time, which the task was
> scheduled away.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> Index: linux-2.6/kernel/sched.c
> ===================================================================
> --- linux-2.6.orig/kernel/sched.c
> +++ linux-2.6/kernel/sched.c
> @@ -3566,7 +3566,7 @@ switch_tasks:
>
> sched_info_switch(prev, next);
> if (likely(prev != next)) {
> - next->timestamp = now;
> + next->timestamp = next->last_ran = now;
> rq->nr_switches++;
> rq->curr = next;
> ++*switch_count;
>
Is this going to be merged or not??
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
2007-03-01 23:45 ` Chuck Ebbert
@ 2007-03-02 0:27 ` Andrew Morton
0 siblings, 0 replies; 7+ messages in thread
From: Andrew Morton @ 2007-03-02 0:27 UTC (permalink / raw)
To: Chuck Ebbert
Cc: tglx, Ingo Molnar, john stultz, Roman Zippel, Mike Galbraith,
Ken Chen, balducci, LKML, Greg KH
On Thu, 01 Mar 2007 18:45:14 -0500
Chuck Ebbert <cebbert@redhat.com> wrote:
> Thomas Gleixner wrote:
> > Problem description at:
> > http://bugzilla.kernel.org/show_bug.cgi?id=8048
> >
> > Commit b18ec80396834497933d77b81ec0918519f4e2a7
> > [PATCH] sched: improve migration accuracy
> > optimized the scheduler time calculations, but broke posix-cpu-timers.
> >
> > The problem is that the p->last_ran value is not updated after a context
> > switch. So a subsequent call to current_sched_time() calculates with a
> > stale p->last_ran value, i.e. accounts the full time, which the task was
> > scheduled away.
> >
> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> >
> > Index: linux-2.6/kernel/sched.c
> > ===================================================================
> > --- linux-2.6.orig/kernel/sched.c
> > +++ linux-2.6/kernel/sched.c
> > @@ -3566,7 +3566,7 @@ switch_tasks:
> >
> > sched_info_switch(prev, next);
> > if (likely(prev != next)) {
> > - next->timestamp = now;
> > + next->timestamp = next->last_ran = now;
> > rq->nr_switches++;
> > rq->curr = next;
> > ++*switch_count;
> >
>
> Is this going to be merged or not??
It just hit mainline.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value
[not found] ` <fa.cIP2OCge0gIF8cSETEmZ9D2dxpE@ifi.uio.no>
@ 2007-02-22 16:49 ` John
0 siblings, 0 replies; 7+ messages in thread
From: John @ 2007-02-22 16:49 UTC (permalink / raw)
To: tglx
Cc: Andrew Morton, Ingo Molnar, john stultz, Roman Zippel,
Mike Galbraith, Ken Chen, balducci, Greg KH, linux-kernel,
linux.kernel
Thomas Gleixner wrote:
> Problem description at:
> http://bugzilla.kernel.org/show_bug.cgi?id=8048
>
> Commit b18ec80396834497933d77b81ec0918519f4e2a7
> [PATCH] sched: improve migration accuracy
> optimized the scheduler time calculations, but broke posix-cpu-timers.
>
> The problem is that the p->last_ran value is not updated after a context
> switch. So a subsequent call to current_sched_time() calculates with a
> stale p->last_ran value, i.e. accounts the full time, which the task was
> scheduled away.
Could you expand on the impact of this bug for non-kernel hackers? :-)
I'm currently testing 2.6.20-rt5. My app runs in SCHED_RR and just
blocks waiting for several signals. Since my app is the only SCHED_RR
process running on the system, I get the impression that I'm not
affected by this bug. Is that correct?
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> Index: linux-2.6/kernel/sched.c
> ===================================================================
> --- linux-2.6.orig/kernel/sched.c
> +++ linux-2.6/kernel/sched.c
> @@ -3566,7 +3566,7 @@ switch_tasks:
>
> sched_info_switch(prev, next);
> if (likely(prev != next)) {
> - next->timestamp = now;
> + next->timestamp = next->last_ran = now;
> rq->nr_switches++;
> rq->curr = next;
> ++*switch_count;
Regards,
John
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-03-02 0:27 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20070221104747.3cb0da32.akpm@linux-foundation.org>
2007-02-22 0:33 ` [PATCH] Fix posix-cpu-timer breakage caused by stale p->last_ran value Thomas Gleixner
2007-02-22 7:46 ` Ingo Molnar
2007-02-22 8:01 ` Thomas Gleixner
2007-02-22 9:16 ` Mike Galbraith
2007-03-01 23:45 ` Chuck Ebbert
2007-03-02 0:27 ` Andrew Morton
[not found] <fa.5d4W3Gwb5Gw7ztDfk2utJt1zgjc@ifi.uio.no>
[not found] ` <fa.cIP2OCge0gIF8cSETEmZ9D2dxpE@ifi.uio.no>
2007-02-22 16:49 ` John
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).