[libvirt] [PATCH v3] qemu: Support numad

Osier Yang jyang at redhat.com
Thu Mar 15 04:38:31 UTC 2012


On 03/12/2012 04:17 PM, Daniel Veillard wrote:
> On Thu, Mar 08, 2012 at 09:36:26PM +0800, Osier Yang wrote:
>> numad is an user-level daemon that monitors NUMA topology and
>> processes resource consumption to facilitate good NUMA resource
>> alignment of applications/virtual machines to improve performance
>> and minimize cost of remote memory latencies. It provides a
>> pre-placement advisory interface, so significant processes can
>> be pre-bound to nodes with sufficient available resources.
>>
>> More details: http://fedoraproject.org/wiki/Features/numad
>>
>> "numad -w ncpus:memory_amount" is the advisory interface numad
>> provides currently.
>>
>> This patch add the support by introducing a new XML attribute
>> for<vcpu>. e.g.
>>
>>    <vcpu placement="auto">4</vcpu>
>>    <vcpu placement="static" cpuset="1-10^6">4</vcpu>
>>
>> The returned advisory nodeset from numad will be printed
>> in domain's dumped XML. e.g.
>>    <vcpu placement="auto" cpuset="1-10^6">4</vcpu>
>>
>> If placement is "auto", the number of vcpus and the current
>> memory amount specified in domain XML will be used for numad
>> command line (numad uses MB for memory amount):
>>    numad -w $num_of_vcpus:$current_memory_amount / 1024
>>
>> The advisory nodeset returned from numad will be used to set
>> domain process CPU affinity then. (e.g. qemuProcessInitCpuAffinity).
>>
>> If the user specifies both CPU affinity policy (e.g.
>> (<vcpu cpuset="1-10,^7,^8">4</vcpu>) and placement == "auto"
>> the specified CPU affinity will be overridden.
>>
>> Only QEMU/KVM drivers support it now.
>>
>> See docs update in patch for more details.
>>
>> v2 - v3:
>>    * XML schema is changed to<vcpu placement="static|auto">4</vcpu>
>>    * Affected tests are updated
>>    * LXC driver's support is dropped, let's see what's the real
>>      performance on qemu driver first.
>>
>> v1 - v2:
>>    * Since Bill Gray says it doesn't matter to use the number of
>>      vcpus and current memory amount as numad cmd line argument,
>>      though from sementics point of view, what numad expects are
>>      physical CPU numbers, let's go this way.
>>      v2 dropped XML<cpu required_cpu='4' required_memory='512000'/>,
>>      and just a new boolean XML element<autonuma>. Codes are refactored
>>      accordingly.
>>
>>    * v1 overrides the cpuset specified by<vcpu cpuset='1-10,^7'>2</vcpu>,
>>      v2 doesn't do that, but just silently ignored.
>>
>>    * xml2xml test is added
>
>    A relatively long patch, but I went through it and it looks okay, ACK
>    from me but I would appreciate someone else to have a quick look :-)
>
> Daniel
>

Thanks, I pushed this.

Osier




More information about the libvir-list mailing list