[libvirt] [RFC] exporting KVM host power saving capabilities through libvirt

Dave Allan dallan at redhat.com
Fri Jul 1 21:19:06 UTC 2011


On Fri, Jul 01, 2011 at 04:56:29PM -0400, Dave Allan wrote:
> On Tue, Jun 28, 2011 at 08:55:31PM +0530, Vaidyanathan Srinivasan wrote:
> > Hi,
> > 
> > Linux host systems running KVM support various power management
> > capabilities.  Most of the features like DVFS and sleep states can be
> > independently exploited by the host system itself based on system
> > utilisation subject to policies set by the administrator.
> > 
> > However, system-wide low power states like S3 and S4 would require
> > external communication and interaction with the systems management
> > stack in order to be used.  The first steps in this direction would be
> > to allow systems management stack to discover host power saving
> > capabilities like S3 and S4 along with various other host CPU
> > capabilities.
> > 
> > Libvirt seems to be the main glue layer between the platform and the
> > systems-management stack.  Adding host power savings capabilities as
> > part of libvirt host discovery mechanism seems to be one possible
> > approach without addition of any new APIs or agents.
> 
> Can you provide the use cases you're looking to address with this
> work?

BTW, I'm intrigued by what you might be doing here, but I don't feel
like I have enough information at this point to know quite what to
think of it.

Dave


> > libvirt has virConnectGetCapabilities() that would export an XML file
> > describing the capabilities of the host platform and guest features.
> > 
> > KVM hypervisor's capability to support S3 can be exported as a host
> > feature in the XML as follows:
> > 
> > <host>
> >     <uuid>94a3492f-2635-2491-8c87-8de976fad119</uuid>
> >     <cpu>
> >       <arch>x86_64</arch>
> >       <features>        <<<=== New host feature fields
> >         <S3/>
> >         <S4/>
> >       </features>
> 
> Just my $.02, but calling it <features> seems to be confusingly close
> to the existing <feature> tag.  Maybe <power_management> ?
> 
> >       <model>Westmere</model>
> >       <vendor>Intel</vendor>
> >       <topology sockets='1' cores='2' threads='2'/>
> >       <feature name='rdtscp'/>
> >       <feature name='xtpr'/>
> >       <feature name='tm2'/>
> >       <feature name='est'/>
> >       <feature name='vmx'/>     <<<= These are host CPU features
> > 
> > System management software that works through libvirt, already queries
> > this capabilities XML file and hence no new API is needed.
> > 
> > As simple discovery mechanism can be added to libvirt as follows:
> > 
> > Index: libvirt-0.9.0/src/qemu/qemu_capabilities.c
> > ===================================================================
> > --- libvirt-0.9.0.orig/src/qemu/qemu_capabilities.c
> > +++ libvirt-0.9.0/src/qemu/qemu_capabilities.c
> > @@ -738,6 +738,14 @@ virCapsPtr qemuCapsInit(virCapsPtr old_c
> >      virCapabilitiesAddHostMigrateTransport(caps,
> >                                             "tcp");
> > 
> > +    /* Add host energy management host capabilities */
> > +
> > +    /* if "pm-is-supported --suspend" == 0 */
> > +    virCapabilitiesAddHostFeature(caps, "S3");
> > +
> > +    /* if "pm-is-supported --hibernate" == 0 */
> > +    virCapabilitiesAddHostFeature(caps, "S4");
> > +
> >      /* First the pure HVM guests */
> >      for (i = 0 ; i < ARRAY_CARDINALITY(arch_info_hvm) ; i++)
> >          if (qemuCapsInitGuest(caps, old_caps,
> > 
> > 
> > Please let me know your comments, I will code a working prototype
> > shortly and post for review/discussion.
> 
> Dave
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list




More information about the libvir-list mailing list