2009-07-26 03:34:05

by Fred Fan

[permalink] [raw]
Subject: Re: inaccurate cpu idle time from top command

Hi cocala:
I have met same issue. And we found the total utilization
count(added by idle's utilization) is not 100% in detail processes
information fields.
best Regards
Fred

2009/7/24 cocala <[email protected]>:
> I saw one commit "3209ada8285a9fa6ab8f7a731d54031ec884c745 - sched: account
> system time properly"
> This commit is to take into account timer IRQ interrupting the idle task
> servicing a hard or soft irq.
>
> If a softirq is started in a tick, all the time in the tick will be counted
> as soft irq time even most time in the tick is idle.
> In our use case, one jiffy is 10ms and the 1G net driver will generate many
> software irq, so the "top" command will show high softare irq time and cpu
> idle time approaches to zero.
> If I change the jiffy to 1ms, the "top" command shows much higher cpu idle
> time. I think this algorithm is also not fair for some cases.
>
> Is there any better way to count the softare irq time?
>
> Thanks
> cocala
> -------------------------------------------------------------------
> List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
> FAQ: ? ? ? ?http://www.arm.linux.org.uk/mailinglists/faq.php
> Etiquette: ?http://www.arm.linux.org.uk/mailinglists/etiquette.php
>


2009-07-27 07:58:56

by Martin Schwidefsky

[permalink] [raw]
Subject: Re: inaccurate cpu idle time from top command

On Sun, 26 Jul 2009 11:34:02 +0800
Fred Fan <[email protected]> wrote:

> Hi cocala:
> I have met same issue. And we found the total utilization
> count(added by idle's utilization) is not 100% in detail processes
> information fields.
> best Regards
> Fred
>
> 2009/7/24 cocala <[email protected]>:
> > I saw one commit "3209ada8285a9fa6ab8f7a731d54031ec884c745 - sched: account
> > system time properly"
> > This commit is to take into account timer IRQ interrupting the idle task
> > servicing a hard or soft irq.
> >
> > If a softirq is started in a tick, all the time in the tick will be counted
> > as soft irq time even most time in the tick is idle.
> > In our use case, one jiffy is 10ms and the 1G net driver will generate many
> > software irq, so the "top" command will show high softare irq time and cpu
> > idle time approaches to zero.
> > If I change the jiffy to 1ms, the "top" command shows much higher cpu idle
> > time. I think this algorithm is also not fair for some cases.
> >
> > Is there any better way to count the softare irq time?
> >
> > Thanks
> > cocala

There is a solution to this problem but not all architectures have
implemented it. Currently only s390, powerpc and ia64 have defined
CONFIG_VIRT_CPU_ACCOUNTING which allows the architecture backend to do
its own, precise math. The backdraw of the improved accounting is
i) some complicated code, and ii) a slight performance penalty. So far
nobody wanted to implement it for x86.

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.