From: Ingo Molnar <mingo@kernel.org>
To: Frederic Weisbecker <fweisbec@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Li Zhong <zhong@linux.vnet.ibm.com>,
Namhyung Kim <namhyung.kim@lge.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Thomas Gleixner <tglx@linutronix.de>,
Sedat Dilek <sedat.dilek@gmail.com>,
Gleb Natapov <gleb@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
Tony Luck <tony.luck@intel.com>,
Fenghua Yu <fenghua.yu@intel.com>,
Christoph Lameter <cl@linux.com>
Subject: Re: [GIT PULL] cputime: Full dynticks task/cputime accounting v8
Date: Tue, 5 Feb 2013 13:13:36 +0100 [thread overview]
Message-ID: <20130205121336.GB21455@gmail.com> (raw)
In-Reply-To: <1360020500-32496-1-git-send-email-fweisbec@gmail.com>
* Frederic Weisbecker <fweisbec@gmail.com> wrote:
> Ingo,
>
> Please pull the new full dynticks cputime accounting code that
> can be found at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
> tags/full-dynticks-cputime-for-mingo
>
> It's exactly the same tag/HEAD as in my v7. I'm just making a new pull
> request in order to restart a fresh thread like you suggested. The old
> one was filled with a discussion with Steve about what we thought was a bug.
> We concluded it was actually an unavoidable tiny error margin due to how we
> consider the boundary between kernel and user space (tick uses user_mode(regs)
> whereas generic vtime uses context tracking callbacks). The artificial
> testcase we were using was making this margin visible. No big difference
> should be found with real workloads though. So Steve gave his Ack on the pull
> request.
>
> Then Christoph reported a build error but it doesn't belong to this tree:
> it's about an old version of my full dynticks tree.
>
> So in the end I see no opposition for this tree to be pulled. If anybody
> has any concern, please raise your hand here.
>
> Thanks.
>
> ---
> This implements the cputime accounting on full dynticks CPUs.
>
> Typical cputime stats infrastructure relies on the timer tick and
> its periodic polling on the CPU to account the amount of time
> spent by the CPUs and the tasks per high level domains such as
> userspace, kernelspace, guest, ...
>
> Now we are preparing to implement full dynticks capability on
> Linux for Real Time and HPC users who want full CPU isolation.
> This feature requires a cputime accounting that doesn't depend
> on the timer tick.
>
> To implement it, this new cputime infrastructure plugs into
> kernel/user/guest boundaries to take snapshots of cputime and
> flush these to the stats when needed. This performs pretty
> much like CONFIG_VIRT_CPU_ACCOUNTING except that context location
> and cputime snaphots are synchronized between write and read
> side such that the latter can safely retrieve the pending tickless
> cputime of a task and add it to its latest cputime snapshot to
> return the correct result to the user.
>
> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
> ---
>
> Frederic Weisbecker (8):
> context_tracking: Export context state for generic vtime
> cputime: Librarize per nsecs resolution cputime definitions
> cputime: Move default nsecs_to_cputime() to jiffies based cputime
> file
> cputime: Generic on-demand virtual cputime accounting
> cputime: Allow dynamic switch between tick/virtual based cputime
> accounting
> cputime: Use accessors to read task cputime stats
> kvm: Prepare to add generic guest entry/exit callbacks
> cputime: Safely read cputime of full dynticks CPUs
>
> arch/alpha/kernel/osf_sys.c | 6 +-
> arch/ia64/include/asm/cputime.h | 92 +--------
> arch/ia64/include/asm/thread_info.h | 4 +-
> arch/ia64/include/asm/xen/minstate.h | 2 +-
> arch/ia64/kernel/asm-offsets.c | 2 +-
> arch/ia64/kernel/entry.S | 16 +-
> arch/ia64/kernel/fsys.S | 4 +-
> arch/ia64/kernel/head.S | 4 +-
> arch/ia64/kernel/ivt.S | 8 +-
> arch/ia64/kernel/minstate.h | 2 +-
> arch/ia64/kernel/time.c | 5 +-
> arch/powerpc/configs/chroma_defconfig | 2 +-
> arch/powerpc/configs/corenet64_smp_defconfig | 2 +-
> arch/powerpc/configs/pasemi_defconfig | 2 +-
> arch/powerpc/include/asm/cputime.h | 6 +-
> arch/powerpc/include/asm/lppaca.h | 2 +-
> arch/powerpc/include/asm/ppc_asm.h | 4 +-
> arch/powerpc/kernel/entry_64.S | 4 +-
> arch/powerpc/kernel/time.c | 5 +-
> arch/powerpc/platforms/pseries/dtl.c | 6 +-
> arch/powerpc/platforms/pseries/setup.c | 6 +-
> arch/s390/kernel/vtime.c | 6 +-
> arch/x86/kernel/apm_32.c | 11 +-
> drivers/isdn/mISDN/stack.c | 7 +-
> fs/binfmt_elf.c | 8 +-
> fs/binfmt_elf_fdpic.c | 7 +-
> fs/proc/array.c | 4 +-
> include/asm-generic/cputime.h | 66 +-----
> include/asm-generic/cputime_jiffies.h | 72 ++++++
> include/asm-generic/cputime_nsecs.h | 104 +++++++++
> include/linux/context_tracking.h | 28 +++
> include/linux/hardirq.h | 4 +-
> include/linux/init_task.h | 11 +
> include/linux/kernel_stat.h | 2 +-
> include/linux/kvm_host.h | 55 ++++-
> include/linux/sched.h | 40 ++++
> include/linux/tsacct_kern.h | 3 +
> include/linux/vtime.h | 59 ++++--
> init/Kconfig | 23 ++-
> kernel/acct.c | 6 +-
> kernel/context_tracking.c | 43 +++--
> kernel/cpu.c | 4 +-
> kernel/delayacct.c | 7 +-
> kernel/exit.c | 10 +-
> kernel/fork.c | 6 +
> kernel/posix-cpu-timers.c | 28 ++-
> kernel/sched/core.c | 1 +
> kernel/sched/cputime.c | 298 +++++++++++++++++++++++---
> kernel/signal.c | 12 +-
> kernel/softirq.c | 6 +-
> kernel/time/tick-sched.c | 5 +-
> kernel/tsacct.c | 44 +++-
> 52 files changed, 842 insertions(+), 322 deletions(-)
> create mode 100644 include/asm-generic/cputime_jiffies.h
> create mode 100644 include/asm-generic/cputime_nsecs.h
Pulled, thanks a lot Frederic!
Ingo
prev parent reply other threads:[~2013-02-05 12:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 23:28 [GIT PULL] cputime: Full dynticks task/cputime accounting v8 Frederic Weisbecker
2013-02-05 12:13 ` Ingo Molnar [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130205121336.GB21455@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=fenghua.yu@intel.com \
--cc=fweisbec@gmail.com \
--cc=gleb@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=namhyung.kim@lge.com \
--cc=paul.gortmaker@windriver.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sedat.dilek@gmail.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=zhong@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.