Messages in this thread | | | Subject | Re: [PATCH 00/10] vtime: Delay cputime accounting to tick | From | Christian Borntraeger <> | Date | Tue, 6 Dec 2016 09:40:15 +0100 |
| |
On 12/06/2016 03:32 AM, Frederic Weisbecker wrote: > This follows up Martin Schwidefsky's patch which propose to delay > cputime accounting to the tick in order to minimize the calls to > account_system_time() and alikes as these functions can carry quite some > overhead: > > http://lkml.kernel.org/r/20161121111728.13a0a3db@mschwide > > The set includes Martin's patch, rebased on top of tip:sched/core and > latest s390 changes, and extends it to the other implementations of > CONFIG_VIRT_CPU_ACCOUNTING_NATIVE (powerpc and ia64) along with a few > core changes to adapt the whole. > > Only built-tested though as I don't have access to any of these archs. > > git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git > vtime/acc >
I have not checked the results yet (1), but this branch reduces the overhead of calculating the times a lot. I have a microbenchmark that does some simple KVM hypercalls under s390 and the average time shrinks from 280ns to 260ns. (we call accounting at guest enter and exit) About 50% of the savings seems to be Martins changes in vtime_account_irq_enter, the other 50% seems to be common code accounting doing less work.
These savings of ~20ns per guest exit will also help virtio, pagefault and any other host activity on behalf of KVM guests. Nice.
(1) the values seem to make sense but I have not done any calculation yet.
> HEAD: ee6c393b212193bc01818c7cf4ae9cba3f469f00 > > Thanks, > Frederic > --- > > Frederic Weisbecker (9): > powerpc32: Fix stale scaled stime on context switch > ia64: Fix wrong start cputime assignment on task switch > cputime: Allow accounting system time using cpustat index > cputime: Export account_guest_time > powerpc: Prepare accounting structure for cputime flush on tick > powerpc: Migrate stolen_time field to accounting structure > powerpc/vtime: Accumulate cputime and account only on tick/task switch > ia64: Accumulate cputime and account only on tick/task switch > vtime: Rename vtime_account_user() to vtime_flush() > > Martin Schwidefsky (1): > s390/cputime: delayed accounting of system time > > > arch/ia64/include/asm/thread_info.h | 6 ++ > arch/ia64/kernel/time.c | 66 +++++++++++----- > arch/powerpc/include/asm/accounting.h | 14 +++- > arch/powerpc/include/asm/paca.h | 1 - > arch/powerpc/kernel/asm-offsets.c | 8 +- > arch/powerpc/kernel/time.c | 138 +++++++++++++++++++++------------- > arch/powerpc/xmon/xmon.c | 8 +- > arch/s390/include/asm/lowcore.h | 65 ++++++++-------- > arch/s390/include/asm/processor.h | 3 + > arch/s390/kernel/vtime.c | 116 +++++++++++++++++----------- > include/linux/kernel_stat.h | 7 +- > include/linux/vtime.h | 7 +- > kernel/sched/cputime.c | 25 +++--- > 13 files changed, 295 insertions(+), 169 deletions(-) >
| |