RE: [PATCH] KVM: x86: use TPAUSE to replace PAUSE in halt polling
From: Mi, Dapeng1
Date: Thu Aug 25 2022 - 08:16:15 EST
> From: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> Sent: Thursday, August 25, 2022 1:19 AM
> To: Christopherson,, Sean <seanjc@xxxxxxxxxx>; Mi, Dapeng1
> <dapeng1.mi@xxxxxxxxx>
> Cc: rafael@xxxxxxxxxx; daniel.lezcano@xxxxxxxxxx; linux-pm@xxxxxxxxxxxxxxx;
> linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; zhenyuw@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] KVM: x86: use TPAUSE to replace PAUSE in halt polling
>
> On 8/24/22 17:26, Sean Christopherson wrote:
> > I say "if", because I think this needs to come with performance
> > numbers to show the impact on guest latency so that KVM and its users can
> make an informed decision.
> > And if it's unlikely that anyone will ever want to enable TPAUSE for
> > halt polling, then it's not worth the extra complexity in KVM.
>
> Yeah, halt polling works around perhaps the biggest performance issue with VMs
> compared to bare metal (so much that it's even possible to move halt polling
> _inside_ the guest for extra performance).
>
> I am ready to be proven wrong but I doubt TPAUSE will have a small effect, and
> if one wants the most power saving they should disable halt polling. Perhaps
> KVM could do it automatically if the powersaving governor is in effect?
Paolo,
In our tests, we see halt polling consumes too much CPU resources and power. For example, In video playback case,
The CPU utilization of halt polling is 17% and brings 7% extra power consumption comparing with disabling halt polling.
Halt polling seems to consume too much cpu resource and power than imagine, especially for Client platform, it make things worse.
Base on our observation, TPAUSE could improve 1% ~ 2% power saving. Disabling halt polling is another alternative method we are thinking.
Base on our tests, we don't see there are obvious performance downgrade even for FIO and netperf on Intel Alderlake platform. It looks
the context switch latency could not be so large on the latest CPU.
Yes, you are right, it could be a better method to make KVM enable/disable halt polling base on the CPU performance governor.
>
> Paolo