Re: [PATCH 4.14-stable] KVM: x86: remove APIC Timer periodic/oneshot spikes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 08, 2018 at 08:17:14AM +0000, Anthoine Bourgeois wrote:
> commit ecf08dad723d3e000aecff6c396f54772d124733 upstream.
> 
> Since the commit "8003c9ae204e: add APIC Timer periodic/oneshot mode VMX
> preemption timer support", a Windows 10 guest has some erratic timer
> spikes.
> 
> Here the results on a 150000 times 1ms timer without any load:
> 	  Before 8003c9ae204e | After 8003c9ae204e
> Max           1834us          |  86000us
> Mean          1100us          |   1021us
> Deviation       59us          |    149us
> Here the results on a 150000 times 1ms timer with a cpu-z stress test:
> 	  Before 8003c9ae204e | After 8003c9ae204e
> Max          32000us          | 140000us
> Mean          1006us          |   1997us
> Deviation      140us          |  11095us
> 
> The root cause of the problem is starting hrtimer with an expiry time
> already in the past can take more than 20 milliseconds to trigger the
> timer function.  It can be solved by forward such past timers
> immediately, rather than submitting them to hrtimer_start().
> In case the timer is periodic, update the target expiration and call
> hrtimer_start with it.
> 
> v2: Check if the tsc deadline is already expired. Thank you Mika.
> v3: Execute the past timers immediately rather than submitting them to
> hrtimer_start().
> v4: Rearm the periodic timer with advance_periodic_target_expiration() a
> simpler version of set_target_expiration(). Thank you Paolo.
> 
> Cc: Mika Penttilä <mika.penttila@xxxxxxxxxxxx>
> Cc: Wanpeng Li <kernellwp@xxxxxxxxx>
> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx> # 4.14.x
> Signed-off-by: Anthoine Bourgeois <anthoine.bourgeois@xxxxxxxxxxxxxxx>
> 8003c9ae204e ("KVM: LAPIC: add APIC Timer periodic/oneshot mode VMX preemption timer support")
> Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx>
> ---
>  arch/x86/kvm/lapic.c | 37 ++++++++++++++++++++-----------------
>  1 file changed, 20 insertions(+), 17 deletions(-)

Now applied, thanks.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux