public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Wanpeng Li <kernellwp@gmail.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Vitaly Kuznetsov" <vkuznets@redhat.com>,
	"Wanpeng Li" <wanpengli@tencent.com>,
	"Jim Mattson" <jmattson@google.com>,
	"Joerg Roedel" <joro@8bytes.org>
Subject: Re: [PATCH] KVM: LAPIC: Loose fluctuation filter for auto tune lapic_timer_advance_ns
Date: Wed, 25 Sep 2019 12:29:49 -0700	[thread overview]
Message-ID: <20190925192949.GM31852@linux.intel.com> (raw)
In-Reply-To: <1569390424-22031-1-git-send-email-wanpengli@tencent.com>

On Wed, Sep 25, 2019 at 01:47:04PM +0800, Wanpeng Li wrote:
> From: Wanpeng Li <wanpengli@tencent.com>
> 
> 5000 guest cycles delta is easy to encounter on desktop, per-vCPU 
> lapic_timer_advance_ns always keeps at 1000ns initial value, lets 
> loose fluctuation filter a bit to make auto tune can make some 
> progress.
> 
> Signed-off-by: Wanpeng Li <wanpengli@tencent.com>
> ---
>  arch/x86/kvm/lapic.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> index 3a3a685..258407e 100644
> --- a/arch/x86/kvm/lapic.c
> +++ b/arch/x86/kvm/lapic.c
> @@ -67,7 +67,7 @@
>  
>  static bool lapic_timer_advance_dynamic __read_mostly;
>  #define LAPIC_TIMER_ADVANCE_ADJUST_MIN 100
> -#define LAPIC_TIMER_ADVANCE_ADJUST_MAX 5000
> +#define LAPIC_TIMER_ADVANCE_ADJUST_MAX 10000
>  #define LAPIC_TIMER_ADVANCE_ADJUST_INIT 1000
>  /* step-by-step approximation to mitigate fluctuation */
>  #define LAPIC_TIMER_ADVANCE_ADJUST_STEP 8
> @@ -1504,7 +1504,7 @@ static inline void adjust_lapic_timer_advance(struct kvm_vcpu *vcpu,
>  		timer_advance_ns += ns/LAPIC_TIMER_ADVANCE_ADJUST_STEP;
>  	}
>  
> -	if (unlikely(timer_advance_ns > LAPIC_TIMER_ADVANCE_ADJUST_MAX))
> +	if (unlikely(timer_advance_ns > LAPIC_TIMER_ADVANCE_ADJUST_MAX/2))

Doh, missed that these are two different time domains in the original
review, i.e. ns vs. cycles.

We should use separate defines for the filter since that check is done
in cycles.  Not sure what names to use to keep things somewhat clear.

Maybe s/ADJUST/EXPIRE for the cycles, and s/ADJUST/NS for the ns ones?
E.g.:

#define LAPIC_TIMER_ADVANCE_EXPIRE_MIN	100
#define LAPIC_TIMER_ADVANCE_EXPIRE_MAX	10000
#define LAPIC_TIMER_ADVANCE_NS_MAX	5000
#define LAPIC_TIMER_ADVANCE_NS_INIT	1000

>  		timer_advance_ns = LAPIC_TIMER_ADVANCE_ADJUST_INIT;
>  	apic->lapic_timer.timer_advance_ns = timer_advance_ns;
>  }
> -- 
> 2.7.4
> 

  reply	other threads:[~2019-09-25 19:29 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-25  5:47 [PATCH] KVM: LAPIC: Loose fluctuation filter for auto tune lapic_timer_advance_ns Wanpeng Li
2019-09-25 19:29 ` Sean Christopherson [this message]
2019-09-26  0:19   ` Wanpeng Li

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=20190925192949.GM31852@linux.intel.com \
    --to=sean.j.christopherson@intel.com \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=kernellwp@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.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