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).