Re: kvm guest loops_per_jiffy miscalibration under host load

Anthony Liguori
2008-07-07T19:22:08Z

Marcelo Tosatti wrote:
> On Mon, Jul 07, 2008 at 03:27:16PM -0300, Glauber Costa wrote:
>
>>> I agree. A paravirt solution solves the problem.
>>>
>> Please, look at the patch I've attached.
>>
>> It does __delay with host help. This may have the nice effect of not
>> busy waiting for long-enough delays, and may well.
>>
>> It is _completely_ PoC, just to show the idea. It's ugly, broken,
>> obviously have to go through pv-ops, etc.
>>
>> Also, I intend to add a lpj field in the kvm clock memory area. We
>> could do just this later, do both, etc.
>>
>> If we agree this is a viable solution, I'll start working on a patch
>>
>
> This stops interrupts from being processed during the delay. And also
> there are cases like this recently introduced break:
>
> /* Allow RT tasks to run */
> preempt_enable();
> rep_nop();
> preempt_disable();
>
> I think it would be better to just pass the lpj value via paravirt and
> let the guest busy-loop as usual.
>

I agree. VMI and Xen already pass a cpu_khz paravirt value. Something
similar would probably do the trick.

It may be worthwhile having udelay() or spinlocks call into KVM if
they've been spinning long enough but I think that's a separate discussion.

Regards,

Anthony Liguori