From: Anton Blanchard <hidden> Date: 2017-05-19 14:41:17
From: Anton Blanchard <redacted>
ppc64 is the only architecture that turns on VIRT_CPU_ACCOUNTING_NATIVE
by default. The overhead of this option is extremely high - a context
switch microbenchmark using sched_yield() is almost 20% slower.
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
As such, disable this option by default. If a user really wants it,
they can still enable it manually.
Signed-off-by: Anton Blanchard <redacted>
---
init/Kconfig | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
@@ -342,8 +342,7 @@ config VIRT_CPU_ACCOUNTINGchoiceprompt"Cputime accounting"-defaultTICK_CPU_ACCOUNTINGif!PPC64-defaultVIRT_CPU_ACCOUNTING_NATIVEifPPC64+defaultTICK_CPU_ACCOUNTING# Kind of a stub config for the pure tick based cputime accountingconfigTICK_CPU_ACCOUNTING
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2017-05-22 04:15:58
Anton Blanchard [off-list ref] writes:
From: Anton Blanchard <redacted>
ppc64 is the only architecture that turns on VIRT_CPU_ACCOUNTING_NATIVE
by default. The overhead of this option is extremely high - a context
switch microbenchmark using sched_yield() is almost 20% slower.
Running on what? It should all be nop'ed out unless you're on a platform
that needs it (SPLPAR).
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
Can it? We don't select HAVE_IRQ_TIME_ACCOUNTING, so AFAICS it can't be
enabled.
Doesn't dropping this mean we never count stolen time?
cheers
From: Nicholas Piggin <npiggin@gmail.com> Date: 2017-05-22 04:46:18
On Mon, 22 May 2017 14:15:57 +1000
Michael Ellerman [off-list ref] wrote:
Anton Blanchard [off-list ref] writes:
quoted
From: Anton Blanchard <redacted>
ppc64 is the only architecture that turns on VIRT_CPU_ACCOUNTING_NATIVE
by default. The overhead of this option is extremely high - a context
switch microbenchmark using sched_yield() is almost 20% slower.
Running on what? It should all be nop'ed out unless you're on a platform
that needs it (SPLPAR).
Not ACCOUNT_CPU_USER_ENTRY/EXIT, which adds a fair cost to kernel
entry/exit (my notes say ~70 cycles on getppid() out of 3-4 hundred).
quoted
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
Can it? We don't select HAVE_IRQ_TIME_ACCOUNTING, so AFAICS it can't be
enabled.
Doesn't dropping this mean we never count stolen time?
cheers
From: Anton Blanchard <hidden> Date: 2017-05-22 05:13:34
Hi Michael,
quoted
ppc64 is the only architecture that turns on
VIRT_CPU_ACCOUNTING_NATIVE by default. The overhead of this option
is extremely high - a context switch microbenchmark using
sched_yield() is almost 20% slower.
Running on what? It should all be nop'ed out unless you're on a
platform that needs it (SPLPAR).
POWERNV native. We don't nop out all the vtime_account_* gunk do we? It
is all those functions that are a large part of the problem.
quoted
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
Can it? We don't select HAVE_IRQ_TIME_ACCOUNTING, so AFAICS it can't
be enabled.
I have a separate patch to enable it.
Doesn't dropping this mean we never count stolen time?
Perhaps. Do we have any applications left that care?
Anton
ppc64 is the only architecture that turns on
VIRT_CPU_ACCOUNTING_NATIVE by default. The overhead of this option
is extremely high - a context switch microbenchmark using
sched_yield() is almost 20% slower.
Running on what? It should all be nop'ed out unless you're on a
platform that needs it (SPLPAR).
POWERNV native. We don't nop out all the vtime_account_* gunk do we? It
is all those functions that are a large part of the problem.
quoted
quoted
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
Can it? We don't select HAVE_IRQ_TIME_ACCOUNTING, so AFAICS it can't
be enabled.
I have a separate patch to enable it.
quoted
Doesn't dropping this mean we never count stolen time?
Perhaps. Do we have any applications left that care?
From: Anton Blanchard <redacted>
ppc64 is the only architecture that turns on VIRT_CPU_ACCOUNTING_NATIVE
by default. The overhead of this option is extremely high - a context
switch microbenchmark using sched_yield() is almost 20% slower.
To get finer grained user/hardirq/softirq statitics, the
IRQ_TIME_ACCOUNTING option can be used instead, which has much lower
overhead.
Does IRQ_TIME_ACCOUNTING allow the same granularity as
VIRT_CPU_ACCOUNTING_NATIVE ?
I've quickly looked into the source, it seems that this option still
accounts based on time ticks.
On a hardware doing mainly VoIP handling, the processes run a few ms
every 20 ms. With TICK_CPU_ACCOUNTING and a 10ms tick, the processes
either appear with 50% CPU or almost 0%.
Would it be more precise with IRQ_TIME_ACCOUNTING ?
Christophe
quoted hunk
As such, disable this option by default. If a user really wants it,
they can still enable it manually.
Signed-off-by: Anton Blanchard <redacted>
---
init/Kconfig | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
@@ -342,8 +342,7 @@ config VIRT_CPU_ACCOUNTINGchoiceprompt"Cputime accounting"-defaultTICK_CPU_ACCOUNTINGif!PPC64-defaultVIRT_CPU_ACCOUNTING_NATIVEifPPC64+defaultTICK_CPU_ACCOUNTING# Kind of a stub config for the pure tick based cputime accountingconfigTICK_CPU_ACCOUNTING