From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Gleb Natapov <gleb@kernel.org>, Vinod Chegu <chegu_vinod@hp.com>,
Hui-Zhi Zhao <hui-zhi.zhao@hp.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Lisa Mitchell <lisa.mitchell@hp.com>
Subject: Re: [PATCH v3 4/7] KVM: VMX: dynamise PLE window
Date: Thu, 21 Aug 2014 22:59:43 +0200 [thread overview]
Message-ID: <20140821205942.GG20546@potion.brq.redhat.com> (raw)
In-Reply-To: <53F6440B.8010709@linux.vnet.ibm.com>
2014-08-22 00:40+0530, Raghavendra K T:
> On 08/21/2014 09:38 PM, Radim Krčmář wrote:
> Thanks for the nice patch.
> default of grow = 2 and shrink = 0 is very good, which aids fast
> clamping in overcommit and less ple_exits in undercommit.
> with a small concern over modifier (shrinker) value in patch 6,
>
> Reviewed-by: Raghavendra KT <raghavendra.kt@linux.vnet.ibm.com>
Thank you for the review and testing.
> >-#define KVM_VMX_DEFAULT_PLE_GAP 128
> >-#define KVM_VMX_DEFAULT_PLE_WINDOW 4096
> >+#define KVM_VMX_DEFAULT_PLE_GAP 128
> >+#define KVM_VMX_DEFAULT_PLE_WINDOW 4096
> >+#define KVM_VMX_DEFAULT_PLE_WINDOW_GROW 2
> >+#define KVM_VMX_DEFAULT_PLE_WINDOW_SHRINK 0
> >+#define KVM_VMX_DEFAULT_PLE_WINDOW_MAX \
> >+ INT_MAX / KVM_VMX_DEFAULT_PLE_WINDOW_GROW
>
> Some observations:
>
> 1. I think a large ple_window for e.g., 16MB itself
> would be very large value after which the ple_window change would not
> have much effect.
Agreed, 16M is around 4ms@4GHz, holding a spinlock for that long is
closer to a bug.
> So could KVM_VMX_DEFAULT_PLE_WINDOW_MAX be just
> KVM_VMX_DEFAULT_PLE_WINDOW^2 or something ? or otherwise..
I'd be perfectly content with a high default maximum like this, yet
there isn't much point in having that default at all if we can't reach
it in practice, so with the current default, we are at least ready for
THz+ x86 intels :)
I though about deafaulting it to some guessed fraction of the scheduler
tick, but then, I wanted to merge at least something :)
> How about ..
> define KVM_VMX_DEFAULT_PLE_WINDOW_MAX = INT_MAX
> /KVM_VMX_DEFAULT_PLE_WINDOW.
= 524288 (2^19), too low IMO,
no-overcommit scenarios seem to go higher quite often.
> (considering we don't allow default grow to be greater than default ple
> window).
>
> 2. can we consider min_ple_window value of 2k. tracing showed that in
> overcommit there were several occations of 4k <- 4k situations.
Low values are more affected by KVM's overhead on every PLE exit, but
benchmarks really decide this ...
Having a separate ple_window_min would allow more tuning, so I can do
that if there are benefits of lower windows.
On the other hand, I thought that increasing the default window would be
a good default, which would make separate minimum even better.
> 3. Do you think using ( << and >> ) instead of (*, /) saves some cycles
> considering we could have potentially have grow,shrink numbers != power of 2
* takes one or two cycles more than <<, so I wouldn't replace it,
because it limits available grows a lot.
(I don't expect we would set values above 5.)
/ is slow (around ten times slower than *), which the reason why we
avoid it by default, but I still prefer more options.
> >+static int __grow_ple_window(int val)
> >+{
> >+ if (ple_window_grow < 1)
>
> why not ple_window_grow <= 1 ?
Emergent mini-feature: have different static levels of ple_window, in
combination with dynamic knobs.
(set grow and shrink to 1, choose ple_window before starting a guest)
And because you have to willingly set 1, I'm not aware of any advantage
of '<= 1'.
> >+static int __shrink_ple_window(int val, int modifier, int minimum)
> >+{
> >+ if (modifier < 1)
>
> why not modifier < 1. May be this would address a concern in patch 6.
"/= 1" gives no shrinking, which I considered as a feature -- you can
easily search for the maximal achievable ple_window that way.
next prev parent reply other threads:[~2014-08-21 20:59 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
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ář [this message]
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
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=20140821205942.GG20546@potion.brq.redhat.com \
--to=rkrcmar@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=chegu_vinod@hp.com \
--cc=gleb@kernel.org \
--cc=hui-zhi.zhao@hp.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lisa.mitchell@hp.com \
--cc=pbonzini@redhat.com \
--cc=raghavendra.kt@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