Re: [PATCH] KVM: X86: Limit timer frequency with more smaller interval

From: Darren Kenny
Date: Mon Apr 30 2018 - 08:32:19 EST

Hi Wanpeng Li,

On Sun, Apr 29, 2018 at 07:38:20PM -0700, Wanpeng Li wrote:
From: Wanpeng Li <wanpengli@xxxxxxxxxxx>

Anthoine reported:
The period used by Windows change over time but it can be 1 milliseconds
or less. I saw the limit_periodic_timer_frequency print so 500
microseconds is sometimes reached.

This patchs limits timer frequency with more smaller interval 200ms(5000Hz)
to leave some headroom as Paolo suggested since Windows 10 changed the
scheduler tick limit from 1024 Hz to 2048 Hz.

I would suggest re-writing this slightly, removing the 'this patch'
as some people suggested in other threads, and maybe some other
small re-wording, e.g.:

As suggested by Paolo, lower the timer frequency limit to a
smaller interval of 200 ms (5000 Hz) to leave some headroom. This
is required due to Windows 10 changing the scheduler tick limit
from 1024 Hz to 2048 Hz.

Also, in the subject line, maybe write it as 'Lower timer frequency
limit to 200ms'?

Reported-by: Anthoine Bourgeois <anthoine.bourgeois@xxxxxxxxxxxxxxx>
Suggested-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Cc: Radim KrÄmÃÅ <rkrcmar@xxxxxxxxxx>
Cc: Anthoine Bourgeois <anthoine.bourgeois@xxxxxxxxxxxxxxx>
Signed-off-by: Wanpeng Li <wanpengli@xxxxxxxxxxx>

With those changes (or similar):

Reviewed-by: Darren Kenny <darren.kenny@xxxxxxxxxx>

arch/x86/kvm/x86.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 51ecd38..dc47073 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -114,7 +114,7 @@ module_param(ignore_msrs, bool, S_IRUGO | S_IWUSR);
static bool __read_mostly report_ignored_msrs = true;
module_param(report_ignored_msrs, bool, S_IRUGO | S_IWUSR);

-unsigned int min_timer_period_us = 500;
+unsigned int min_timer_period_us = 200;
module_param(min_timer_period_us, uint, S_IRUGO | S_IWUSR);

static bool __read_mostly kvmclock_periodic_sync = true;