public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] Dynamic Pause Loop Exiting window.
@ 2014-08-21 16:08 Radim Krčmář
  2014-08-21 16:08 ` [PATCH v3 1/7] KVM: add kvm_arch_sched_in Radim Krčmář
                   ` (8 more replies)
  0 siblings, 9 replies; 29+ messages in thread
From: Radim Krčmář @ 2014-08-21 16:08 UTC (permalink / raw)
  To: kvm
  Cc: linux-kernel, Paolo Bonzini, Gleb Natapov, Raghavendra KT,
	Vinod Chegu, Hui-Zhi Zhao, Christian Borntraeger, Lisa Mitchell

v2 -> v3:
 * copy&paste frenzy [v3 4/7] (split modify_ple_window)
 * commented update_ple_window_actual_max [v3 4/7]
 * renamed shrinker to modifier [v3 4/7]
 * removed an extraneous max(new, ple_window) [v3 4/7] (should have been in v2)
 * changed tracepoint argument type, printing and macro abstractions [v3 5/7]
 * renamed ple_t to ple_int [v3 6/7] (visible in modinfo)
 * intelligent updates of ple_window [v3 7/7]

---
v1 -> v2:
 * squashed [v1 4/9] and [v1 5/9] (clamping)
 * dropped [v1 7/9] (CPP abstractions)
 * merged core of [v1 9/9] into [v1 4/9] (automatic maximum)
 * reworked kernel_param_ops: closer to pure int [v2 6/6]
 * introduced ple_window_actual_max & reworked clamping [v2 4/6]
 * added seqlock for parameter modifications [v2 6/6]

---
PLE does not scale in its current form.  When increasing VCPU count
above 150, one can hit soft lockups because of runqueue lock contention.
(Which says a lot about performance.)

The main reason is that kvm_ple_loop cycles through all VCPUs.
Replacing it with a scalable solution would be ideal, but it has already
been well optimized for various workloads, so this series tries to
alleviate one different major problem while minimizing a chance of
regressions: we have too many useless PLE exits.

Just increasing PLE window would help some cases, but it still spirals
out of control.  By increasing the window after every PLE exit, we can
limit the amount of useless ones, so we don't reach the state where CPUs
spend 99% of the time waiting for a lock.

HP confirmed that this series prevents soft lockups and TSC sync errors
on large guests.


Radim Krčmář (7):
  KVM: add kvm_arch_sched_in
  KVM: x86: introduce sched_in to kvm_x86_ops
  KVM: VMX: make PLE window per-VCPU
  KVM: VMX: dynamise PLE window
  KVM: trace kvm_ple_window grow/shrink
  KVM: VMX: runtime knobs for dynamic PLE window
  KVM: VMX: optimize ple_window updates to VMCS

 arch/arm/kvm/arm.c              |   4 ++
 arch/mips/kvm/mips.c            |   4 ++
 arch/powerpc/kvm/powerpc.c      |   4 ++
 arch/s390/kvm/kvm-s390.c        |   4 ++
 arch/x86/include/asm/kvm_host.h |   2 +
 arch/x86/kvm/svm.c              |   6 ++
 arch/x86/kvm/trace.h            |  30 ++++++++
 arch/x86/kvm/vmx.c              | 147 ++++++++++++++++++++++++++++++++++++++--
 arch/x86/kvm/x86.c              |   6 ++
 include/linux/kvm_host.h        |   2 +
 virt/kvm/kvm_main.c             |   2 +
 11 files changed, 207 insertions(+), 4 deletions(-)

-- 
2.1.0


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

end of thread, other threads:[~2014-08-25 15:11 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-21 16:08 [PATCH v3 0/7] Dynamic Pause Loop Exiting window Radim Krčmář
2014-08-21 16:08 ` [PATCH v3 1/7] KVM: add kvm_arch_sched_in Radim Krčmář
2014-08-21 18:49   ` Raghavendra K T
2014-08-21 20:31     ` Radim Krčmář
2014-08-21 21:12       ` Paolo Bonzini
2014-08-21 16:08 ` [PATCH v3 2/7] KVM: x86: introduce sched_in to kvm_x86_ops Radim Krčmář
2014-08-21 18:50   ` Raghavendra K T
2014-08-21 16:08 ` [PATCH v3 3/7] KVM: VMX: make PLE window per-VCPU Radim Krčmář
2014-08-21 18:52   ` Raghavendra K T
2014-08-21 16:08 ` [PATCH v3 4/7] KVM: VMX: dynamise PLE window Radim Krčmář
2014-08-21 19:10   ` Raghavendra K T
2014-08-21 20:31     ` Paolo Bonzini
2014-08-21 20:59     ` Radim Krčmář
2014-08-21 16:08 ` [PATCH v3 5/7] KVM: trace kvm_ple_window grow/shrink Radim Krčmář
2014-08-25 13:53   ` Sabrina Dubroca
2014-08-25 14:32     ` Radim Krčmář
2014-08-25 14:44       ` Paolo Bonzini
2014-08-21 16:08 ` [PATCH v3 6/7] KVM: VMX: runtime knobs for dynamic PLE window Radim Krčmář
2014-08-21 19:17   ` Raghavendra K T
2014-08-21 21:03     ` Radim Krčmář
2014-08-21 16:08 ` [PATCH v3 7/7] KVM: VMX: optimize ple_window updates to VMCS Radim Krčmář
2014-08-21 19:18   ` Raghavendra K T
2014-08-21 16:30 ` [PATCH v3 0/7] Dynamic Pause Loop Exiting window Paolo Bonzini
2014-08-21 16:50   ` Radim Krčmář
2014-08-21 16:53     ` Paolo Bonzini
2014-08-22  4:45     ` Wanpeng Li
2014-08-25 15:11       ` Radim Krčmář
2014-08-21 17:03   ` Raghavendra K T
2014-08-21 18:40 ` Raghavendra K T

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox