All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
To: "Li,Rongqing" <lirongqing@baidu.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"seanjc@google.com" <seanjc@google.com>
Subject: Re: [PATCH][v2] KVM: use cpu_relax when halt polling
Date: Wed, 28 Jul 2021 08:12:23 +0200	[thread overview]
Message-ID: <CAM9Jb+iuhexGnwhp_zNCWBLO5dGainBUitObyTDRubjV_nq-HA@mail.gmail.com> (raw)
In-Reply-To: <fe516f0a191d4c6e9fbd10b380c87f19@baidu.com>

'
> > > "Rather than disallowing halt-polling entirely, on x86 it should be
> > > sufficient to simply have the hardware thread yield to its sibling(s)
> > > via PAUSE.  It probably won't get back all performance, but I would
> > > expect it to be close.
> > > This compiles on all KVM architectures, and AFAICT the intended usage
> > > of cpu_relax() is identical for all architectures."
> >
> > For sure change to cpu_relax() is better.
> > Was just curious to know if you got descent performance improvement
> > compared to previously reported with Unixbench.
> >
> > Thanks,
> > Pankaj
>
> The test as below:
>
> 1. run unixbench dhry2reg:  ./Run -c 1 dhry2reg -i 1
> without SMT disturbance, the score is 3172
> with a  {while(1)i++} SMT disturbance,  the score is 1583
> with a  {while(1)(rep nop/pause)} SMT disturbance,  the score is 1729.4
>
> seems cpu_relax can not get back all performance , what wrong?

Maybe because of pause intercept filtering, comparatively Mayless VM Exits?

>
>
> 2. back to haltpoll
> run unixbench dhry2reg ./Run -c 1 dhry2reg -i 1
> without SMT disturbance, the score is 3172
>
> with redis-benchmark SMT disturbance, redis-benchmark takes 90%cpu:
> without patch, the score is 1776.9
> with my first patch, the score is 1782.3
> with cpu_relax patch, the score is 1778
>
> with redis-benchmark SMT disturbance, redis-benchmark takes 33%cpu:
> without patch, the score is 1929.9
> with my first patch, the score is 2294.6
> with cpu_relax patch, the score is 2005.3
>
>
> cpu_relax give less than stop halt polling, but it should have little effect for redis-benchmark which get benefit from halt polling

We are seeing improvement with cpu_relax() though not to the level of
stopping the halt polling when sibling
CPU running redis workload. For 90% case I think its expected to have
similar performance.

For 33% stopping halt poll gives better result because of the
workload. Overall I think this patch helps and not impact
performance in normal cases.

Reviewed-by: Pankaj Gupta <pankaj.gupta@ionos.com>

Best regards,
Pankaj


>
>
> -Li
>
> > >
> > > Suggested-by: Sean Christopherson <seanjc@google.com>
> > > Signed-off-by: Li RongQing <lirongqing@baidu.com>
> > > ---
> > > diff v1: using cpu_relax, rather that stop halt-polling
> > >
> > >  virt/kvm/kvm_main.c | 1 +
> > >  1 file changed, 1 insertion(+)
> > >
> > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index
> > > 7d95126..1679728 100644
> > > --- a/virt/kvm/kvm_main.c
> > > +++ b/virt/kvm/kvm_main.c
> > > @@ -3110,6 +3110,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
> > >
> > ++vcpu->stat.generic.halt_poll_invalid;
> > >                                 goto out;
> > >                         }
> > > +                       cpu_relax();
> > >                         poll_end = cur = ktime_get();
> > >                 } while (kvm_vcpu_can_poll(cur, stop));
> > >         }
> > > --
> > > 2.9.4
> > >

  reply	other threads:[~2021-07-28  6:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-27 11:12 [PATCH][v2] KVM: use cpu_relax when halt polling Li RongQing
2021-07-27 18:15 ` Pankaj Gupta
2021-07-28  2:57   ` 答复: " Li,Rongqing
2021-07-28  6:12     ` Pankaj Gupta [this message]
2021-07-28  6:46       ` Li,Rongqing

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=CAM9Jb+iuhexGnwhp_zNCWBLO5dGainBUitObyTDRubjV_nq-HA@mail.gmail.com \
    --to=pankaj.gupta.linux@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=lirongqing@baidu.com \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.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 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.