On Thu, Aug 09, 2007 at 11:13:00PM +0100, Daniel P. Berrange wrote: > The Xen implementations of > > virDomainLookupByID > virDomainLookupByUUID > virDomainLookupByName > virDomainGetOSType > > all have sub-optimal performance since they speak to XenD. The lookupXXX > functions all basically require 3 pieces of info in the end (name,id,uuid). > They each get given one piece & have to lookup the other piece. > > Every running domain has to have an entry in XenStore on /local/domain/N > where 'N' is the id. Under this location there is always a 'name' field. > So if we have the id we can efficiently get the name. I just realized that > the getdomaininfo hypercall struct contains the uuid and id. So for the > ByID and ByUUID calls we can get all the info we need with a hypercall and > a read of xenstore. This is very efficient compared to hitting XenD. Great !!!! > As of Xen 3.1.0 hypervisor the flags in the getdomaininfo hypercall struct > also mark whether the guest is HVM vs paraivrt, so we can also implement > the GetOSType api with a single hypercall. Sounds good to though definitely not a bottleneck. > That just leaves the ByName impl. The only way I can think of doing this > is to scan /local/domain/N in xenstore until we find it. I'm going to try > this, but I'm not convinced it'll be any significantly than talking to XenD. > I may be surprised though. Well if you have 100 guests, that may be slower, but in the average situation of only a couple of guests, it could be a real speedup. The problem is that a lot of domain may accumulate in xenstore /local/domain even if they are not running, both implementation are likely to have completely different behaviour based on the context. But from a cache locality perspective hitting xenstore may scale way better under loaded machines, so it may prove faster even on machines with hundreds of domains. Doing a fair performance comparison may prove really hard. > > Any for the 3 improvements I have done, the 'virsh dominfo' call has improved > when using either ID or UUID: [...] > A pretty good speedup really considering how frequently these calls are > made if you're monitoring domains frequently. Too good to ignore, that looks even too good to be true :-) > Index: src/xen_internal.c Patch looks good to me +1, fanxastic ! Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@xxxxxxxxxx | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list