答复: 答复: [PATCH] KVM: Consider SMT idle status when halt polling

From: Li,Rongqing
Date: Tue Jul 27 2021 - 02:40:07 EST




> -----邮件原件-----
> 发件人: Sean Christopherson <seanjc@xxxxxxxxxx>
> 发送时间: 2021年7月27日 9:26
> 收件人: Li,Rongqing <lirongqing@xxxxxxxxx>
> 抄送: Wanpeng Li <kernellwp@xxxxxxxxx>; Paolo Bonzini
> <pbonzini@xxxxxxxxxx>; Ingo Molnar <mingo@xxxxxxxxxx>; Peter Zijlstra
> <peterz@xxxxxxxxxxxxx>; kvm <kvm@xxxxxxxxxxxxxxx>; LKML
> <linux-kernel@xxxxxxxxxxxxxxx>
> 主题: Re: 答复: [PATCH] KVM: Consider SMT idle status when halt polling
>
> 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.
>

Reasonable, thanks, I will resend it

-Li


> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index
> 6980dabe9df5..a07ecb3c67fb 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -3111,6 +3111,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
> goto out;
> }
> poll_end = cur = ktime_get();
> + cpu_relax();
> } while (kvm_vcpu_can_poll(cur, stop));
> }
>