On Tue, Jun 03, 2014 at 03:26:59PM +0200, Michal Privoznik wrote: > If user or management application wants to create a guest, > it may be useful to know the cost of internode latencies > before the guest resources are pinned. For example: > > <capabilities> > > <host> > ... > <topology> > <cells num='2'> > <cell id='0'> > <memory unit='KiB'>4004132</memory> > <distances> > <sibling id='0' value='10'/> > <sibling id='1' value='20'/> > </distances> > <cpus num='2'> > <cpu id='0' socket_id='0' core_id='0' siblings='0'/> > <cpu id='2' socket_id='0' core_id='2' siblings='2'/> > </cpus> > </cell> > <cell id='1'> > <memory unit='KiB'>4030064</memory> > <distances> > <sibling id='0' value='20'/> > <sibling id='1' value='10'/> > </distances> > <cpus num='2'> > <cpu id='1' socket_id='0' core_id='0' siblings='1'/> > <cpu id='3' socket_id='0' core_id='2' siblings='3'/> > </cpus> > </cell> > </cells> > </topology> > ... > </host> > ... > </capabilities> > > we can see the distance from node1 to node0 is 20 and within nodes 10. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > docs/schemas/capability.rng | 15 +++++++++++ > src/conf/capabilities.c | 19 +++++++++++++- > src/conf/capabilities.h | 13 +++++++++- > src/libxl/libxl_conf.c | 4 +-- > src/nodeinfo.c | 61 ++++++++++++++++++++++++++++++++++++++++++--- > src/test/test_driver.c | 2 +- > src/xen/xend_internal.c | 3 ++- > tests/vircapstest.c | 4 +-- > 8 files changed, 110 insertions(+), 11 deletions(-) I notice our docs for the capabilities XML are non-existant. Separately it'd be nice to start fixing this. > @@ -766,6 +771,18 @@ virCapabilitiesFormatNUMATopology(virBufferPtr buf, > virBufferAsprintf(buf, "<memory unit='KiB'>%llu</memory>\n", > cells[i]->mem); > > + if (cells[i]->nsiblings) { > + virBufferAddLit(buf, "<distances>\n"); > + virBufferAdjustIndent(buf, 2); > + for (j = 0; j < cells[i]->nsiblings; j++) { > + virBufferAsprintf(buf, "<sibling id='%d' value='%d'/>\n", > + cells[i]->siblings[j].node, > + cells[i]->siblings[j].distance); > + } > + virBufferAdjustIndent(buf, -2); > + virBufferAddLit(buf, "</distances>\n"); > + } Indentation is a bit off - should be 4 space indent rather than 2 > @@ -194,8 +203,10 @@ extern int > virCapabilitiesAddHostNUMACell(virCapsPtr caps, > int num, > int ncpus, > + int nsiblings, I'd have a slight prefence for 'nsiblings' to be immediately before the 'siblings' parameter, to make it more obvious that ther're related. While you're changing it, I'd probably also shuffle 'mem' before 'ncpus' so thjat 'ncpus' and 'cpus' are adjacent. > unsigned long long mem, > - virCapsHostNUMACellCPUPtr cpus); > + virCapsHostNUMACellCPUPtr cpus, > + virCapsHostNUMACellSiblingInfoPtr siblings); > > > extern int ACK with those nits fixed Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list