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

Daniel Veillard veillard at redhat.com
Wed Oct 31 09:40:49 UTC 2007


On Wed, Oct 31, 2007 at 05:20:01PM +0900, Saori Fukuta wrote:
> On Tue, 30 Oct 2007 16:54:36 -0400 Daniel Veillard wrote:
> >   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.

  Cool thanks a lot for debugging while I was asleep :-)

> 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)

  excellent, thanks a lot !

> (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.

  yes makes sense !
I also fixed that routine in the XEND case because the value for cpus
was leaked if non-NULL.

> (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.
>    (e.g.)
>    - 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>

   Hum .... right this is a bug, I tried to be smart and failed :-)

> (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.

  oh, yes another bug !

> (4) numa6_fix4.patch
> The expression is different between "xm vcpu-list" and "virsh dumpxml",
> when I specified continuous number.
>    (e.g.)
>    # 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.
>    (e.g.)
>    # ./virsh dumpxml 200| grep cpu
>      <vcpu cpuset='0-1,3-6'>4</vcpu>

  Hum, I'm not sure why you prefer to use a range for 2 consecutive values,
this should be equivalent both for xend and libvirt, but it's a bit
simpler, so no problem !

  I commited the aggregated patches, I think at this point we should be
okay with NUMA support except for potential bugs showing up on testing and
the vcpu pinning informations storage which I still think would be better
addressed at the virsh level.
  What is needed now is more testing I think.

 thanks a lot for your fast testing and debugging !

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list