All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Li,Rongqing" <lirongqing@baidu.com>
To: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"seanjc@google.com" <seanjc@google.com>
Subject: 答复: [PATCH][v2] KVM: use cpu_relax when halt polling
Date: Wed, 28 Jul 2021 02:57:25 +0000	[thread overview]
Message-ID: <fe516f0a191d4c6e9fbd10b380c87f19@baidu.com> (raw)
In-Reply-To: <CAM9Jb+hWS5=Oib-NuKWTL=sfg=BQ-usdRV-H-mj6hLFVF6NYnQ@mail.gmail.com>



> -----邮件原件-----
> 发件人: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
> 发送时间: 2021年7月28日 2:16
> 收件人: Li,Rongqing <lirongqing@baidu.com>
> 抄送: kvm@vger.kernel.org; Paolo Bonzini <pbonzini@redhat.com>;
> seanjc@google.com
> 主题: Re: [PATCH][v2] KVM: use cpu_relax when halt polling
> 
> > SMT siblings share caches and other hardware, and busy halt polling
> > will degrade its sibling performance if its sibling is working
> >
> > Sean Christopherson suggested as below:
> >
> > "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?


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 


-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  2:57 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 [this message]
2021-07-28  6:12     ` Pankaj Gupta
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=fe516f0a191d4c6e9fbd10b380c87f19@baidu.com \
    --to=lirongqing@baidu.com \
    --cc=kvm@vger.kernel.org \
    --cc=pankaj.gupta.linux@gmail.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.