> 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 > > Suggested-by: Sean Christopherson <seanjc@xxxxxxxxxx> > Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx> > --- > 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 >