Re: [PATCH 1/1] SGI X86 UV: Provide a System Activity Indicator driver

From: Mike Travis
Date: Fri Oct 24 2008 - 18:18:13 EST


Andi Kleen wrote:
> Mike Travis <travis@xxxxxxx> writes:
>> I do use the timer mechanism (once per second) to update the scir state.
>> Unfortunately, the state is *always* not idle during the timer callback
>> (since we are actively executing), so I needed some way of knowing the
>> idle state prior to the timer callback.
>
> The idle thread always has pid 0. So if the timer sees current->pid == 0
> it interrupted idle.
>
> But sampling only once a second would be presumably not very accurate.
> You could just check the per cpu statistics the kernel keeps
> anyways in the timer.
>
> I agree with Ingo that this doesn't belong in a idle notifier.
>
> -Andi

Cool, thanks! I rewrote the patch to use current->pid, removing the
idle callback.

On ia64 the activity indicator was kept up to date by modifying the
register state every time the cpu went into and out of idle. Ingo
thought this was excessive I/O overhead and since then, I've learned
that the UV system has a FIFO for these registers. So flipping the
bit every time we changed idle state would quickly fill the FIFO and
wouldn't be keeping in sync with the companion bit which indicates
that the cpu is interruptible.

So the hw group decided that having a once per second indicator, even
if it's only a very narrow (instant) sampling period, would meet their
requirements.

Thanks!
Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/