Re: [PATCH 1/9] ia64: VIRT_CPU_ACCOUNTING (accurate cpu time accounting)

Hidetoshi Seto
2007-11-02T03:15:32Z

Thank you for your nice words.

Tony Luck wrote:
> Overall impression: nice! There have always been some pathalogical
> workloads that have confused the scheduler by executing synchronously
> with the timer tick ... this should end their tricks.
>
> A couple of comments:
>
>> + Select this option to enable more accurate task and CPU time
>> + accounting. This is done by reading a CPU counter on each
>> + kernel entry and exit and on transitions within the kernel
>> + between system, softirq and hardirq state, so there is a
>> + small performance impact.
>
> I haven't tried any macro-level benchmarks, but on a micro-benchmark to
> measure system call overhead I see an additional 19-20 cycles in the
> cached case. This doesn't look like a "small" performance impact (the
> execution time for a syscall in my benchmark is only ~61 cycles). But
> I'd like to see some real benchmarks to see whether the micro-level
> problem is measureable at the macro scale.

Now I'm preparing benchmarks...
I suppose there is still room for improvement(i.e. Peter's hint).

>> -- Adding ACCOUNT_SYS_ENTER adds around 40 cycles to the system
>> call path. If you wanted, you could move reading ITC earlier (it
>> takes up to 36 cycles), and overlap with other work.

The impact of this option would not be 0, however it can be said that
this feature is quite useful enough to be default option of some powerpc
and s390 where that already have its implementation.
(ex.
arch/powerpc/configs/ps3_defconfig:18:CONFIG_VIRT_CPU_ACCOUNTING=y)

> One warning generated by this patch:
> kernel/posix-cpu-timers.c:41: warning: passing arg 1 of
> `timespec_to_cputime' discards qualifiers from pointer target type

There was a dropped "const", now fixed.

Thanks,
H.Seto