All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Marcelo Tosatti <mtosatti@redhat.com>
Cc: x86@kernel.org, kvm@vger.kernel.org,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Avi Kivity <avi@redhat.com>,
	gleb@redhat.com, Linus Torvalds <torvalds@linux-foundation.org>,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCHv6 6/8] kvm: only sync when attention bits set
Date: Thu, 14 Jun 2012 00:04:23 +0300	[thread overview]
Message-ID: <20120613210423.GA24932@redhat.com> (raw)
In-Reply-To: <20120613205336.GB19290@amt.cnet>

On Wed, Jun 13, 2012 at 05:53:36PM -0300, Marcelo Tosatti wrote:
> On Wed, Jun 13, 2012 at 11:35:07AM +0300, Michael S. Tsirkin wrote:
> > On Wed, Jun 13, 2012 at 11:19:24AM +0300, Michael S. Tsirkin wrote:
> > > On Tue, Jun 12, 2012 at 07:27:48PM -0300, Marcelo Tosatti wrote:
> > > > On Sun, Jun 03, 2012 at 10:28:29AM +0300, Michael S. Tsirkin wrote:
> > > > > Commit eb0dc6d0368072236dcd086d7fdc17fd3c4574d4 introduced apic
> > > > > attention bitmask but kvm still syncs lapic unconditionally.
> > > > > As that commit suggested and in anticipation of adding more attention
> > > > > bits, only sync lapic if(apic_attention).
> > > > > 
> > > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > > > > ---
> > > > >  arch/x86/kvm/x86.c |    3 ++-
> > > > >  1 files changed, 2 insertions(+), 1 deletions(-)
> > > > > 
> > > > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> > > > > index be6d549..2f70861 100644
> > > > > --- a/arch/x86/kvm/x86.c
> > > > > +++ b/arch/x86/kvm/x86.c
> > > > > @@ -5388,7 +5388,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
> > > > >  	if (unlikely(vcpu->arch.tsc_always_catchup))
> > > > >  		kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu);
> > > > >  
> > > > > -	kvm_lapic_sync_from_vapic(vcpu);
> > > > > +	if (unlikely(vcpu->arch.apic_attention))
> > > > > +		kvm_lapic_sync_from_vapic(vcpu);
> > > > 
> > > > void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
> > > > {
> > > >         u32 data;
> > > >         void *vapic;
> > > > 
> > > >         if (!test_bit(KVM_APIC_CHECK_VAPIC, &vcpu->arch.apic_attention))
> > > >                 return;
> > > > 
> > > > Please use unlikely more carefully, when a gain is measureable:
> > > > http://lwn.net/Articles/420019/
> > > 
> > > Do we have to measure every single thing?
> > > Sometimes it's obvious: vapic is slow path, isn't it?
> > 
> > Just to clarify the question: I think it's obvious this condition is
> > false more often than true. By how much, depends on the workload.
> > Do you think this is enough to tag this unlikely?
> 
> Depends whether your processor supports flexpriority or not. I don't
> want to argue in favour/against the particular instance
> 
> GCC docs:
> 
> "
> — Built-in Function: long __builtin_expect (long exp, long c)
> 
>     You may use __builtin_expect to provide the compiler with branch
> prediction information. In general, you should prefer to use actual
> profile feedback for this (-fprofile-arcs), as programmers are
> notoriously bad at predicting how their programs actually perform.
> However, there are applications in which this data is hard to collect.
> "
> 
> Lately half of branches in your patches are annotated.

So if I instrument and show that branch is almost never taken that is enough?
This citation does not require measuring the perf impact.

  reply	other threads:[~2012-06-13 21:04 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-03  7:27 [PATCHv6 0/8] kvm: eoi optimization support Michael S. Tsirkin
2012-06-03  7:27 ` [PATCHv6 1/8] kvm: document lapic regs field Michael S. Tsirkin
2012-06-03  7:27 ` [PATCHv6 2/8] kvm: optimize ISR lookups Michael S. Tsirkin
2012-06-12 21:08   ` Marcelo Tosatti
2012-06-13  9:02     ` Michael S. Tsirkin
2012-06-13  9:26       ` Michael S. Tsirkin
2012-06-13 20:21       ` Marcelo Tosatti
2012-06-03  7:28 ` [PATCHv6 3/8] kvm_para: guest side for eoi avoidance Michael S. Tsirkin
2012-06-03  7:28 ` [PATCHv6 4/8] x86/bitops: note on __test_and_clear_bit atomicity Michael S. Tsirkin
2012-06-03  7:28 ` [PATCHv6 5/8] kvm: eoi msi documentation Michael S. Tsirkin
2012-06-12 22:24   ` Marcelo Tosatti
2012-06-03  7:28 ` [PATCHv6 6/8] kvm: only sync when attention bits set Michael S. Tsirkin
2012-06-12 22:27   ` Marcelo Tosatti
2012-06-13  8:19     ` Michael S. Tsirkin
2012-06-13  8:35       ` Michael S. Tsirkin
2012-06-13 20:53         ` Marcelo Tosatti
2012-06-13 21:04           ` Michael S. Tsirkin [this message]
2012-06-13 23:38             ` Marcelo Tosatti
2012-06-14  8:04               ` Michael S. Tsirkin
2012-06-03  7:28 ` [PATCHv6 7/8] kvm: rearrange injection cancelling code Michael S. Tsirkin
2012-06-03  7:28 ` [PATCHv6 8/8] kvm: host side for eoi optimization Michael S. Tsirkin
2012-06-13 21:10   ` Marcelo Tosatti
2012-06-14  8:01     ` Michael S. Tsirkin

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=20120613210423.GA24932@redhat.com \
    --to=mst@redhat.com \
    --cc=avi@redhat.com \
    --cc=gleb@redhat.com \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.