On 11/08/2010 04:06 PM, Daniel P. Berrange wrote:
> On Mon, Nov 08, 2010 at 03:55:14PM +0100, Dennis Jacobfeuerborn wrote:
>> On 11/08/2010 02:22 PM, Sven Lankes wrote:
>>> On Mon, Nov 08, 2010 at 12:38:22PM +0000, Daniel P. Berrange wrote:
>>>
>>>> Try adding   divider=10  to the kernel boot command line for the guest.
>>>> This will make it use a 100HZ tick rate, instead of 1000HZ, lowering the
>>>> background idle load on the host. I doubt it accounts for 20%, but it is
>>>> always worth doing for RHEL5 kernels since they don't have tickless mode.
>>>
>>> I was seeing 10 - 15% cpu for the kvm process too. After adding
>>> divider=10 this dropped to 1%.
>>
>> The fact that the guest needs special kernel parameters to run properly
>> doesn't look right to me. Is there no way for KVM to handle this correctly?
>> Also I just imported this VM from my old Fedora 11 system on the new Fedora
>> 14 install and there I didn't see this behavior.
>
> KVM can't force the guest OS to use a particular timer rate. It is
> simply unfortunate luck that some OS choose to use a 1000HZ timer
> forcing KVM to spend alot of CPU time injecting interrupts. This
> same problem also affects Xen HVM, VMWare and any other full machine
> virtualization platform. Tickless guest kernels are the only solution
> to this problem, and that's not something KVM can magically make
> happen.

I get that but why wasn't this affecting F11 as well? AFAIK Fedora 11 had a 
tickless kernel so something else clearly changed between F11 and F14 that 
causes this.

> Here's what VMWare has to say on the matter, and this applies to
> KVM too
>
>    "Note for uses on divider=10
>     For some Operating Systems, divider=10 is a supported kernel
>     configuration option, but might not be necessary for accurate
>     timekeeping. Using it reduces the frequency of timer interrupts
>     by 10x, which reduces the CPU overhead of processing timer
>     interrupts. This overhead is especially noticeable for idle
>     virtual machines. The only drawback of using divider=10 is
>     that the granularity of wakeups provided by the kernel changes
>     from 1ms to 10ms. The vast majority of applications are not
>     affected by this, but using divider=10 may not be the right
>     tradeoff for some time sensitive applications. For some Operating
>     Systems, specifically older versions, divider=10 greatly improves
>     timekeeping accuracy and is strongly recommended."
>
>    
> http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427
>
>
>> BTW this might or might not be related to a general problem with the kernel
>> in Fedora 14:
>> https://bugzilla.redhat.com/show_bug.cgi?id=650934
>> https://bugzilla.redhat.com/show_bug.cgi?id=635813
>>
>> Anyway, I'm off trying to boot my system with nohz=off and then add the
>> divider thing to the guest to see if that has any impact.
>
> If your kernel supports 'nohz' then, the 'divider' flag will not exist,
> and vica-verca. The 'divider=XX'  arg is a special flag added only to
> RHEL4/5 kernels which do not support tickless to allow their timer rate
> to be decreased.
>
> RHEL-3 had a 100HZ timer so wasn't impacted, and RHEL6 is fully tickless
> so also isn't impacted. All currently supported Fedora are also tickless

The "nohz" was for the host and "divider" for the guest. Here are the 
results: After booting the host with "nohz=off" the qemu process takes 
about 10% rather than 20% and once I add "divider=10" to the guest kernel 
parameters that number goes down to 2%. So this clearly seems to help but 
it doesn't explain why the same guest ran fine on F11 without any 
additional kernel options whatsoever.

Regards,
   Dennis
_______________________________________________
virt mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/virt

Reply via email to