mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 13:22:23 +00:00
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." Suggested-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Li RongQing <lirongqing@baidu.com> Message-Id: <20210727111247.55510-1-lirongqing@baidu.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5868b8225e
commit
7477565433
@ -3110,6 +3110,7 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
|
|||||||
++vcpu->stat.generic.halt_poll_invalid;
|
++vcpu->stat.generic.halt_poll_invalid;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
cpu_relax();
|
||||||
poll_end = cur = ktime_get();
|
poll_end = cur = ktime_get();
|
||||||
} while (kvm_vcpu_can_poll(cur, stop));
|
} while (kvm_vcpu_can_poll(cur, stop));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user