[Libvir] [PATCH] finish NUMA code reorg, plug cpuset at creat time support

Saori Fukuta fukuta.saori at jp.fujitsu.com
Wed Oct 31 08:20:01 UTC 2007

On Tue, 30 Oct 2007 16:54:36 -0400 Daniel Veillard wrote:
>   Okay sorry it took so long, I got distrated by something else and 
> I wanted to come back with a more complete patch for the following:
>   - make sure that cpu expressions coming from the user are reparsed
>     and translated to ranges to make sure we don't have a mismatch between
>     the external representations and what is accepted both by libvirt
>     and xend
>   - Saving the pinning in the XML makes things really complex.
>     alls the XML dump routines of xend assume an SExpr input but 
>     the affinity is not available there. Querying xend may be very costly
>     and it way better to ask at the xen_unified level where the hypervisor
>     hypercall will be used if available
>   - as a result I removed the DumpXML entry point from xen_unified because
>     you need to extend parameters in the xend case
>   - also when coming from the proxy you just have the domain id and
>     it's harder to get the cpu list in an efficient way without 
>     messing even more with the code
> I still think CPU affinity in the domain is misplaced, but well, okay
> I agree to do this for real cpus, this complicates the code a bit though.
>   The associated patch compiles, but I have not yet tested it, it's 
> basically how I would expect to finish the NUMA work, but it certainly need
> debug and testing. I will look at this tomorrow, but I welcome feedback :-)

sounds good to me, I tested with your patch, and I have four fixes for it.
This is a test I did :
[on RHEL5.1]
   dumpxml  (conf  -> XML) state:inactive ...(1) and (2)
            (SExpr -> XML) state:active
   define   (XML   -> conf)
   create   (XML   -> SExpr)
   start    (conf  -> XML  -> SExpr)

[on fedora8]
   dumpxml  (SExpr -> XML) state:inactive (cannot get by Xen) ...(3)
            (SExpr -> XML) state:active   (get by Xen) ...(3)
   define   (XML   -> SExpr)
   create   (XML   -> SExpr)
   start    (nothing translation)

(1) numa6_fix1.patch
I cannot run the dumpxml command with inactive domain on RHEL5.1.
So, I added the check of domain ID and xendConfigVersion.

(2) numa6_fix2.patch
The discontinuous number is invalid for inactive domain on RHEL5.1.
I guess the cause is wrong argument is specified as maxcpu.
   - normal case 
   conf   : cpus = "0,1"
   dumpxml: <vcpu cpuset='0,1'>4</vcpu>
   - invalid case
   conf   : cpus = "0,3"
   dumpxml: <vcpu cpuset='0'>4</vcpu>

(3) numa6_fix3.patch
The expression is different between inactive domain and active domain,
when I don't have vcpu setting for the domain (i.e. "any cpu" is pinned).
   inactive domain :  <vcpu cpuset=''>2</vcpu>
   active domain   :  <vcpu>2</vcpu>
So, I conform to the expression of active domain.

(4) numa6_fix4.patch
The expression is different between "xm vcpu-list" and "virsh dumpxml",
when I specified continuous number.
   # xm vcpu-list 200
   Name              ID VCPUs   CPU State   Time(s) CPU Affinity
   test             200     0     1   -b-      10.9 0-1
   test             200     1     0   -b-       9.1 0-1
   test             200     2     4   -b-       3.1 3-4
   test             200     3     5   -b-       3.9 5-6
   # ./virsh dumpxml 200| grep cpu
     <vcpu cpuset='0,1,3-6'>4</vcpu>
So, I change the expression from "," to "-"(range) that I can use to
create the domain.
   # ./virsh dumpxml 200| grep cpu
     <vcpu cpuset='0-1,3-6'>4</vcpu>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: numa6_fix2.patch
Type: application/octet-stream
Size: 338 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20071031/dfeb957a/attachment-0004.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: numa6_fix1.patch
Type: application/octet-stream
Size: 1149 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20071031/dfeb957a/attachment-0005.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: numa6_fix3.patch
Type: application/octet-stream
Size: 340 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20071031/dfeb957a/attachment-0006.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: numa6_fix4.patch
Type: application/octet-stream
Size: 866 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20071031/dfeb957a/attachment-0007.obj>

More information about the libvir-list mailing list