Messages in this thread | | | Date | Sun, 5 Dec 2010 16:21:51 +0000 | From | Russell King - ARM Linux <> | Subject | Re: [BUG] 2.6.37-rc3 massive interactivity regression on ARM |
| |
On Sun, Dec 05, 2010 at 05:07:36PM +0100, Mikael Pettersson wrote: > I ran two tests on my iop32x machine: > > 1. Made the above-mentioned assignment to rq->clock_task unconditional. > That cured the interactivity regressions. > > 2. Restored the conditional assignment to rq->clock_task and disabled the > platform-specific sched_clock() so the kernel used the generic one. > That too cured the interactivity regressions. > > I then repeated these tests on my ixp4xx machine, with the same results. > > I'll try to come up with a fix for the ixp4xx and plat-iop 32-bit > sched_clock()s.
I'm not sure that's the correct fix - it looks like sched_clock_cpu() should already be preventing scheduler clock time going backwards.
Hmm. IOP32x seems to have a 32-bit timer clocked at 200MHz. That means it wraps once every 21s. However, we have that converted to ns by an unknown multiplier and shift. It seems that those are chosen to guarantee that we will cover only 4s without wrapping in the clocksource conversion. Maybe that's not sufficient?
Could you try looking into sched_clock_cpu(), sched_clock_local() and sched_clock() to see whether anything odd stands out?
| |