[Libvir] Extending libvirt to probe NUMA topology

Daniel Veillard veillard at redhat.com
Tue Sep 11 09:14:44 UTC 2007


On Tue, Sep 11, 2007 at 03:08:46AM +0100, Daniel P. Berrange wrote:
> On Mon, Sep 10, 2007 at 09:52:46PM -0400, beth kon wrote:
> > Daniel,
> > 
> > I'm taking a stab at this work and want to be sure I'm taking the right 
> > approach. I'm new to xen and even newer to libvirt, so have a bit of a 
> > learning curve.

  I suggest the following: I make all the libvirt specific infrastructure
work to plug the new calls which is where I will be the most efficient,
and I let you plug code to talk to Xen which is where you will be more
up to date and able to test, okay ?

> > For the topology information, I assume that this will be a call through 
> > xend, similar to  xenDaemonNodeGetInfo. It would seem natural to somehow 
> > extend the xenDaemonNodeGetInfo with this additional information except 
> > that you suggested having the output in XML. Can you explain why you 
> > chose XML?
> 
> We have to maintain 100% ABI & API compatability against older releases
> of libvirt. This means that once we add a function, struct or other 
> definition in the header files it cannot ever be changed again. So this
> means we can't change the virNodeInfo struct to add NUMA info.
> 
> For this reason we tend to keep struct's just for use in APIs where the
> performance is critical, or data set is unlikely to ever change. So far
> we only use structs for virDomainInfo, virNodeInfo, virSchedParam and
> virVcpuInfo at this time. For more descriptive data we format information
> into an XML document. This makes it very easy to add new XML elements and
> attributes to represent new data items. The same compatability rules apply
> to XML though - once we add an attribute or element it can never be removed
> from the spec. Currently we think putting the NUMA info into XML is the
> best approach since it is not performance critical.
> 
> 
> There are two ways to implement it with Xen - either talk to XenD and
> extract the topology there, or make direct hypercalls. For now it is
> probably easiest to talk to XenD, since this isn't performance critical.

  Agreed, we could use the hypervisor calls but that means extending
that module which is already a bit painful for all the backward compatibility
workaround. Xend access should be simpler, at least in a first implementation.

  I will try to come later today with a first patch defining the framework
and leaving functions to fill for the new calls in the xend_internal.c 
backend.

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