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(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list