Re: [Bug #14859] System timer firing too much without cause

Shawn Starr
2010-01-25T17:30:22Z

On Monday 25 January 2010 12:20:38 Thomas Gleixner wrote:
> On Mon, 25 Jan 2010, Shawn Starr wrote:
> > On Monday 25 January 2010 05:35:50 Thomas Gleixner wrote:
> > > Shawn, why can't you use dynamic ticks ? In the bugzilla I just see
> > > that you worry about the IRQ0 interrupts (which are correct and
> > > necessary when the system is in nohz mode) and the extra rescheduling
> > > interrupts. How is the system misbehaving ?
> >
> > Well, this all stems from trying to use Radeon KMS with IRQs
> > on. Doing so I see system stalls and this is quite noticeable
> > however, I am able to show this same stall on the quad core with the
>
> x> same GPU. Right now, it is unclear to me if there is a underlying
>
> > irq issue or a bug in the radeon driver code that is showing these
> > stalls. Since the radeon folks - at the moment - do not think it is
> > a coding problem in their driver
>
> Does the stall go away, when you disable dynticks ?
>

It does not, no.

> > My impression was using dynamic ticks meant ticks were on demand and
>
> Dynamic ticks are providing a continuous tick long as the machine is
> busy. When a core becomes idle, we programm the timer to go off at the
> next scheduled timer event, if the event is longer away than the next
> tick. When the core goes out of idle (due to the timer or some other
> event) we restart the tick.
>
> So you see less timer interrupts (IRQ0 + Local timer interrupts)

With dynamic ticks on or off, LOC increments rapidly, but I assume that is
normal behavour.

So if none of this really is a kernel issue, I defer it to the radeon folks to
comment further.

Please remove from regression list, I'll close the original bug.

>
> > not continuous. On the quad core box, with dynamic ticks on, the
> > broadcasts are not increasing IRQ 0 events this only happens on the
> > laptop.
>
> Right, that is expected as I explained already. Your desktop does not
> use deeper power states. Check /proc/acpi/processor/CPU0/power on both
> machines to see the difference. You _cannot_ compare a desktop and a
> laptop machine and deduce a regression.
>
> The broadcast mechanism is necessary because the local APIC timer
> stops in deeper power states. That's a hardware problem. So if the
> core goes into a deeper power state then we arm the broadcast timer
> which fires on IRQ0 to wake us up. It is a single timer which is used
> by all cores in a system to work around this hardware stupidity. It's
> named broadcast because it broadcasts the event to the other cores
> when necessary. Your desktop does not use deeper power states,
> therefor it does not use the broadcast timer either.
>
> So the timer IRQ0 increasing is neither a Linux BUG nor a regression.
>
> Thanks,
>
> tglx