linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frederic Weisbecker <fweisbec@gmail.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	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>
Subject: [GIT PULL] cputime: Full dynticks task/cputime accounting v7
Date: Mon, 28 Jan 2013 20:03:57 +0100	[thread overview]
Message-ID: <1359399845-10568-1-git-send-email-fweisbec@gmail.com> (raw)

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

My last concern is the dependency on CONFIG_64BIT. We rely on cputime_t
being u64 for reasonable nanosec granularity implementation. And therefore
we need a single instruction fetch to read kernel cpustat for atomicity
requirement against concurrent incrementation, which only 64 bit archs
can provide.

It's probably no big deal to solve this issue. What we need is simply some
atomic accessors.

There is just no emergency though as this new option depends on the context
tracking subsystem that only x86-64 (and soon ppc64) implements yet. And
this set is complex enough already. I think we can deal with that later.

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>
---

Changes since v6:

* Fix build error with kvm modules (Thanks Sedat Dilek and
Wu Fenguang)

* Fix mistyped header inclusion in ia64

* Fix more missing symbols for kvm

---
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

-- 
1.7.5.4


             reply	other threads:[~2013-01-28 19:04 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-28 19:03 Frederic Weisbecker [this message]
2013-01-28 19:03 ` [PATCH 1/8] context_tracking: Export context state for generic vtime Frederic Weisbecker
2013-01-28 19:03 ` [PATCH 2/8] cputime: Librarize per nsecs resolution cputime definitions Frederic Weisbecker
2013-02-14 19:49   ` Kevin Hilman
2013-02-20 16:07     ` Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 3/8] cputime: Move default nsecs_to_cputime() to jiffies based cputime file Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 4/8] cputime: Generic on-demand virtual cputime accounting Frederic Weisbecker
2013-02-08  3:07   ` Stephen Rothwell
2013-02-08  3:14     ` Stephen Rothwell
2013-02-08  3:19       ` [PATCH] cputime: restore CPU_ACCOUNTING config defaults for PPC64 Stephen Rothwell
2013-02-08 15:18         ` [tip:sched/core] cputime: Restore " tip-bot for Stephen Rothwell
2013-02-08 14:31       ` [PATCH 4/8] cputime: Generic on-demand virtual cputime accounting Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 5/8] cputime: Allow dynamic switch between tick/virtual based " Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 6/8] cputime: Use accessors to read task cputime stats Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 7/8] kvm: Prepare to add generic guest entry/exit callbacks Frederic Weisbecker
2013-01-28 19:04 ` [PATCH 8/8] cputime: Safely read cputime of full dynticks CPUs Frederic Weisbecker
2013-01-28 21:51   ` Sedat Dilek
2013-01-30 21:57     ` Sedat Dilek
2013-01-31  0:38     ` Frederic Weisbecker
2013-01-31  7:24       ` Sedat Dilek
2013-01-31 10:12         ` Frederic Weisbecker
2013-01-31 10:30           ` Sedat Dilek
2013-01-31 16:29             ` Frederic Weisbecker
2013-01-28 19:18 ` [GIT PULL] cputime: Full dynticks task/cputime accounting v7 Christoph Lameter
2013-01-28 19:21   ` Frederic Weisbecker
2013-01-28 20:14     ` Christoph Lameter
2013-01-29  1:42       ` Frederic Weisbecker
2013-01-29  0:02 ` Steven Rostedt
2013-01-29  1:36   ` Frederic Weisbecker
2013-01-29  2:36   ` Steven Rostedt
2013-01-29  2:39     ` Frederic Weisbecker
2013-01-29  2:44       ` Steven Rostedt
2013-01-29  3:29         ` Frederic Weisbecker
2013-01-29  4:38           ` Steven Rostedt
2013-01-29 15:12             ` Frederic Weisbecker
2013-01-29 16:46               ` Steven Rostedt
2013-01-29 16:55                 ` Frederic Weisbecker
2013-01-29 17:08                   ` Steven Rostedt
2013-01-29 21:26     ` Steven Rostedt
2013-01-29 21:37       ` Frederic Weisbecker
2013-02-15  1:55 ` Kevin Hilman
2013-02-15 14:04   ` Mats Liljegren
2013-02-15 15:06     ` Kevin Hilman
2013-02-20 15:53     ` Frederic Weisbecker
2013-02-20 17:53       ` Kevin Hilman
2013-02-20 15:44   ` Frederic Weisbecker
2013-02-20 18:48     ` Kevin Hilman

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=1359399845-10568-1-git-send-email-fweisbec@gmail.com \
    --to=fweisbec@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=fenghua.yu@intel.com \
    --cc=gleb@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).