2004-03-11 06:15:35

by Jonathan Lundell

[permalink] [raw]
Subject: nmi oddity

Running smp 2.4.9 (don't ask) with updated nmi logic on a Dell 650
(UP P4), I notice that NMI is running at about 1.08 Hz. Per the
kernel logic, it should be running at HZ (100) Hz.

I'm using NMI_LOCAL_APIC. check_nmi_watchdog() never gets called in
this mode in an smp kernel, near as I can tell, so nmi_hz never gets
set to 1.

What's going on? Or does anyone else see it?
--
/Jonathan Lundell.


2004-03-11 11:13:46

by Mikael Pettersson

[permalink] [raw]
Subject: Re: nmi oddity

Jonathan Lundell writes:
> Running smp 2.4.9 (don't ask) with updated nmi logic on a Dell 650
> (UP P4), I notice that NMI is running at about 1.08 Hz. Per the
> kernel logic, it should be running at HZ (100) Hz.
>
> I'm using NMI_LOCAL_APIC. check_nmi_watchdog() never gets called in
> this mode in an smp kernel, near as I can tell, so nmi_hz never gets
> set to 1.
>
> What's going on? Or does anyone else see it?

This is a normal. The NMIs are generated from an in-CPU performance
counter configured to increment once per CPU core clock cycle.
(There is no wallclock-like event available, alas.)

Whenever the kernel is idle, "hlt" is normally executed which
stops the CPU until the next external interrupt (typically the
timer). Hence, an idle machine will see a much lower NMI frequence
than a non-idle one.

This behaviour is not universal. Server Tualatins seem to run at
full speed all the time; perhaps they ignore hlt?

If you want NMI_LOCAL_APIC to be clock-like, upgrade your cooling
solution and disable hlt.

/Mikael

2004-03-12 21:52:27

by Jonathan Lundell

[permalink] [raw]
Subject: Re: nmi oddity

At 12:13 PM +0100 3/11/04, Mikael Pettersson wrote:
>Jonathan Lundell writes:
> > Running smp 2.4.9 (don't ask) with updated nmi logic on a Dell 650
> > (UP P4), I notice that NMI is running at about 1.08 Hz. Per the
> > kernel logic, it should be running at HZ (100) Hz.
> >
> > I'm using NMI_LOCAL_APIC. check_nmi_watchdog() never gets called in
> > this mode in an smp kernel, near as I can tell, so nmi_hz never gets
> > set to 1.
> >
> > What's going on? Or does anyone else see it?
>
>This is a normal. The NMIs are generated from an in-CPU performance
>counter configured to increment once per CPU core clock cycle.
>(There is no wallclock-like event available, alas.)
>
>Whenever the kernel is idle, "hlt" is normally executed which
>stops the CPU until the next external interrupt (typically the
>timer). Hence, an idle machine will see a much lower NMI frequence
>than a non-idle one.

That's exactly what's happening; thanks.

If I run a compute-intensive task in the background (eg cat
/dev/zero > /dev/null), the nmi frequency jumps up to 100 Hz.

Switching to NMI_IO_APIC is the best solution for me.

It makes NMI_LOCAL_APIC a v. questionable choice for a watchdog....

>This behaviour is not universal. Server Tualatins seem to run at
>full speed all the time; perhaps they ignore hlt?
>
>If you want NMI_LOCAL_APIC to be clock-like, upgrade your cooling
>solution and disable hlt.
>
>/Mikael
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [email protected]
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/


--
/Jonathan Lundell.