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(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/