* 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