[libvirt] [PATCH 5/6] qemu: Implement hypervisor's period and quota tunable XML configuration and parsing

Wen Congyang wency at cn.fujitsu.com
Thu May 17 06:05:35 UTC 2012


At 05/17/2012 01:42 PM, Hu Tao Wrote:
> On Thu, May 17, 2012 at 01:25:48PM +0800, Wen Congyang wrote:
>> At 05/17/2012 01:09 PM, KAMEZAWA Hiroyuki Wrote:
>>> (2012/05/17 14:07), Wen Congyang wrote:
>>>
>>>> At 05/17/2012 12:46 PM, KAMEZAWA Hiroyuki Wrote:
>>>>> (2012/05/17 12:54), Wen Congyang wrote:
>>>
>>>>>> So, if we donot limit the hypervisor, the behavior shoule not be
>>>>>> changed. So we should limit the whole vm. If the hypervisor threads
>>>>>> are limited, there is no need to limit the whole vm.
>>>>>>
>>>>>
>>>>>
>>>>> need to tune hypervisor quota to limit vcpu-only quota ?
>>>>> Sounds strange to me.
>>>>
>>>> No, current implemetion is:
>>>> 1. limit vcpu and hypervisor: vm is not limited
>>>> 2. limit vcpu only: vm is limited
>>>> 3. limit hypervisor: vm is not limited
>>>> 4. vcpu and hypervisor are not limited: vm is not limited.
>>>>
>>>
>>>
>>> In 2.
>>>
>>>    vm               ----- quota_is_limited
>>>     |- hypervisor   ----- quota is unlimited
>>>     |- vcpu[0...x]  ----- quota is limited
>>>
>>> Hm...vm is limited. It seems user need to tune vm's quota...can user
>>> makes vm's quota to be unlimited and limit *only* vpcus as Xen ?
>>
>> Without this patchset, the vm will be limited if the vcpu is limited.
>> We cannot know whether the hypervisor is unlimited or the user does not
>> set it. If the user does not set it, we should not change the behavior.
>> So I donot find an easy way to limit only vcpus.
> 
> Can we change the implementation like these:
> 
> 1. 
> <cputune>
>   <vcpu>
>     <period>period</period>
>     <quota>quota</quota>
>   </vcpu>
> </cputune>
> 
> Limit vcpus only, does not limit vm or hypervisor.
> 
> 2.
> <cputune>
>   <hypervisor>
>     <period>period</period>
>     <quota>quota</quota>
>   </hypervisor>
> </cputune>
> 
> Limit hypervisor only, does not limit vm or vcpus.
> 
> 3.
> <cputune>
>   <period>period</period>
>   <quota>quota</quota>
> </cputune>
> 
> Limit the whole vm, in this case vcpus and hypervisor are also limited.
> 
> 4.
> <cputune>
>   <period>period</period>
>   <quota>quota</quota>
>   <vcpu>
>     <period>period</period>
>     <quota>quota</quota>
>   </vcpu>
>   <hypervisor>
>     <period>period</period>
>     <quota>quota</quota>
>   </hypervisor>
> </cputune>

This is very complex, and the user should know how we implement it
and the period/quota's limit. If the user gives a wrong value, the
vm cannot start.

We implement the limit like this:

              vm
               |
 ----------------------------
 |       ...         |       |
vcpu0               vcpun   hypervisor

If all is limited, the vm's quota should be greater than max(vcpu's quota, hypervisor's quota)
and vm's period should be less than min(vcpu's period, hypervisor's period).

So I donot like this idea.

Thanks
Wen Congyang
> 
> Limit vm, vcpus and hypervisor. I'm not sure how cpu cgroup behaves
> in this case, but I suppose vcpus' and hypervisor's values will not
> exceed vm's value.
> 
> 




More information about the libvir-list mailing list