Messages in this thread | | | Date | Thu, 9 Oct 2008 11:06:05 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH] sched_clock: prevent scd->clock from moving backwards |
| |
* Peter Zijlstra <a.p.zijlstra@chello.nl> wrote:
> On Wed, 2008-10-08 at 08:00 -0500, Dave Kleikamp wrote: > > sched_clock: prevent scd->clock from moving backwards > > > > When sched_clock_cpu() couples the clocks between two cpus, it may > > increment scd->clock beyond the GTOD tick window that __update_sched_clock() > > uses to clamp the clock. A later call to __update_sched_clock() may move > > the clock back to scd->tick_gtod + TICK_NSEC, violating the clock's > > monotonic property. > > > > This patch ensures that scd->clock will not be set backward. > > Ah, yes indeed, this comes from the tick not happening at the same time > on different cpus, so if we use a local timestamp to move a remote clock > forward, this scenario could indeed happen. > > The fix looks good to me, good catch, thanks shaggy! > > A related 'fix' which I'm still not quite sure about is making the > window 'tick_gtod + 2*TICK_NSEC'. That increases the max observed > difference to 4 jiffies, but allows ticks to be 'late' a bit without > first holding back time and then jumping ahead again. > > > Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com> > > Cc: Ingo Molnar <mingo@elte.hu> > > Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> > > Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
applied to tip/sched/core, thanks!
Ingo
| |