LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH 0/7] nohz/rcu: Consider guest context as extended quiescent state (ie: enable full nohz on guest)
@ 2015-03-05  2:14 Frederic Weisbecker
  2015-03-05  2:14 ` [PATCH 1/7] ppc: Remove unused cpp symbols in kvm headers Frederic Weisbecker
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Frederic Weisbecker @ 2015-03-05  2:14 UTC (permalink / raw)
  To: LKML
  Cc: Frederic Weisbecker, Paolo Bonzini, Alexander Graf,
	Luiz Capitulino, Christian Borntraeger, Benjamin Herrenschmidt,
	Marcelo Tosatti, Paul E . McKenney, Andy Lutomirski, Will deacon,
	Rik van Riel

Hi,

Rik sent out this patchset a few weeks ago. It appears to be interesting
to disable the tick on the host while the guest is running. Indeed the
host tick is irrelevant while vcpu runs, it consumes CPU time and cache
for no good reasons.

Full dynticks already works in every context but RCU prevents it to
be effective outside userspace because the CPU need to take part of
RCU grace period completion as long as RCU may be used, which is the
case in kernel context. However guest is similar to userspace and idle
in that we know RCU is unused in such context. As such a
guest/userspace/idle CPU can let other CPUs report its RCU quiescent
state on its behalf and shut down the tick safely, provided it isn't
needed for other reasons than RCU. This is called RCU extended quiescent
state.

This was implemented for idle and userspace. This patchset brings it for
guest.

Before pushing to Ingo, I've just cleaned out a few boring details on
naming and changelogs. So I'm just posting the whole in case somebody
has a comment before doing the pull request in a few days

Thanks.

Frederic Weisbecker (2):
  ppc: Remove unused cpp symbols in kvm headers
  context_tracking: Rename context symbols to prepare for transition
    state

Rik van Riel (5):
  context_tracking: Generalize context tracking APIs to support user and
    guest
  context_tracking: Add stub context_tracking_is_enabled
  context_tracking: Run vtime_user_enter/exit only when state ==
    CONTEXT_USER
  context_tracking: Export context_tracking_user_enter/exit
  kvm,rcu,nohz: use RCU extended quiescent state when running KVM guest

 arch/powerpc/include/asm/kvm_book3s.h  |  4 ---
 arch/x86/kernel/traps.c                |  2 +-
 include/linux/context_tracking.h       | 15 +++++++--
 include/linux/context_tracking_state.h |  9 ++++--
 include/linux/kvm_host.h               |  3 +-
 kernel/context_tracking.c              | 59 ++++++++++++++++++++++------------
 kernel/sched/core.c                    |  2 +-
 7 files changed, 61 insertions(+), 33 deletions(-)

-- 
2.1.4


^ permalink raw reply	[flat|nested] 11+ messages in thread
* [GIT PULL] nohz: Enable full dynticks on guest mode
@ 2015-03-10 14:37 Frederic Weisbecker
  2015-03-10 14:37 ` [PATCH 6/7] context_tracking: Export context_tracking_user_enter/exit Frederic Weisbecker
  0 siblings, 1 reply; 11+ messages in thread
From: Frederic Weisbecker @ 2015-03-10 14:37 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: LKML, Frederic Weisbecker, Paolo Bonzini, Alexander Graf,
	Luiz Capitulino, Christian Borntraeger, Benjamin Herrenschmidt,
	Marcelo Tosatti, Paul E . McKenney, Andy Lutomirski, Will deacon,
	Rik van Riel, Thomas Gleixner

Ingo,

Please pull the nohz/guest branch that can be found at:

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
	nohz/guest

This is 4.1 material.

HEAD: 126a6a542446f1a49b9f3c69237c87df3eb4e6e1

---
Some measurements showed that disabling the tick on the host while the
guest is running can be interesting on some workloads. Indeed the
host tick is irrelevant while vcpu runs, it consumes CPU time and cache
for no good reasons.

Full dynticks already works in every context but RCU prevents it to
be effective outside userspace because the CPU needs to take part of
RCU grace period completion as long as RCU may be used on it, which is
the case in kernel context. However guest is similar to userspace and idle
in that we know RCU is unused on such context. Therefore a CPU in
guest/userspace/idle context can let other CPUs report its own RCU
quiescent state on its behalf and shut down the tick safely, provided it
isn't needed for other reasons than RCU. This is called RCU extended
quiescent state.

This was implemented for idle and userspace. This patchset now brings it
for guest through the following steps:

* Generalize the context tracking APIs to also track guest
* Rename/sanitize a few CPP symbols accordingly
* Report guest entry/exit to RCU and define this context area as an RCU
  extended quiescent state.
---

Thanks,
	Frederic
---

Rik van Riel (5):
      context_tracking: Generalize context tracking APIs to support user and guest
      context_tracking: Add stub context_tracking_is_enabled
      context_tracking: Run vtime_user_enter/exit only when state == CONTEXT_USER
      context_tracking: Export context_tracking_user_enter/exit
      kvm,rcu,nohz: use RCU extended quiescent state when running KVM guest

Frederic Weisbecker (2):
      ppc: Remove unused cpp symbols in kvm headers
      context_tracking: Rename context symbols to prepare for transition state


 arch/powerpc/include/asm/kvm_book3s.h  |  4 ---
 arch/x86/kernel/traps.c                |  2 +-
 include/linux/context_tracking.h       | 15 +++++++--
 include/linux/context_tracking_state.h |  9 ++++--
 include/linux/kvm_host.h               |  3 +-
 kernel/context_tracking.c              | 59 ++++++++++++++++++++++------------
 kernel/sched/core.c                    |  2 +-
 7 files changed, 61 insertions(+), 33 deletions(-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2015-03-10 14:38 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-05  2:14 [PATCH 0/7] nohz/rcu: Consider guest context as extended quiescent state (ie: enable full nohz on guest) Frederic Weisbecker
2015-03-05  2:14 ` [PATCH 1/7] ppc: Remove unused cpp symbols in kvm headers Frederic Weisbecker
2015-03-05 16:06   ` Rik van Riel
2015-03-05  2:14 ` [PATCH 2/7] context_tracking: Rename context symbols to prepare for transition state Frederic Weisbecker
2015-03-05 16:07   ` Rik van Riel
2015-03-05  2:14 ` [PATCH 3/7] context_tracking: Generalize context tracking APIs to support user and guest Frederic Weisbecker
2015-03-05  2:14 ` [PATCH 4/7] context_tracking: Add stub context_tracking_is_enabled Frederic Weisbecker
2015-03-05  2:14 ` [PATCH 5/7] context_tracking: Run vtime_user_enter/exit only when state == CONTEXT_USER Frederic Weisbecker
2015-03-05  2:14 ` [PATCH 6/7] context_tracking: Export context_tracking_user_enter/exit Frederic Weisbecker
2015-03-05  2:14 ` [PATCH 7/7] kvm,rcu,nohz: use RCU extended quiescent state when running KVM guest Frederic Weisbecker
2015-03-10 14:37 [GIT PULL] nohz: Enable full dynticks on guest mode Frederic Weisbecker
2015-03-10 14:37 ` [PATCH 6/7] context_tracking: Export context_tracking_user_enter/exit Frederic Weisbecker

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