Abstract:
Power management in a virtual machine environment that includes at least one virtual machine platform providing a plurality of virtual machines, and a plurality of separate (user) computers, each connected to a respective one of the virtual machines in a typical virtual machine distribution environment. There is also provided a function, independent of the connections of the user computers to the virtual machines, for determining if each of said computers connected to the virtual machines is in an active state together with a function for switching the virtual machine platform into a reduced power consumption state in the platform when all of the computers connected to virtual machines are in a non-active state.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates to virtual machine platforms including a plurality of virtual machines, each respectively connected to each of a plurality of separate computers and particularly to power management for such virtual machine platforms. 
       BACKGROUND OF RELATED ART 
       [0002]    In the past ten years, with the great increase in World Wide Web (Web) systems, the computer processing power required by an organization has grown exponentially each year so that now hundreds and even thousands of servers are required. This has led to a resurgence of larger and larger mainframe computers. Particularly mainframe and like large computers operating in a virtual machine (VM) mode in which multiple instances of an operating system and associated application program reside in the same physical hardware. Such virtual machines have been satisfying the needs for the large number of servers that are often arrayed as virtual machine server farms. For further background, attention is directed to the article:  Virtual Linux servers under z/VM: security, performance, and administrative issues,  D. Turk, published in the  IBM Systems Journal,  July 2005; and to the article:  More POWER to Ya, Expanded Virtualization Manager capabilities help customers grow and manage virtualized environments,  Jim Fall, published in the IBM Systems Magazine, September 2007. 
         [0003]    In such virtual machine environments wherein multiple user computers are connected to each virtual machine platform providing a plurality of virtual machines respectively connected to these multiple users, power management is difficult to control. Full power is required at each virtual machine platform prior to the initiation of a virtual machine session. Since the virtual machine platform must always be available to remote user computers that need to access appropriate virtual machines, it has been customary to continuously operate any online platform in a full power mode. The wasted power consumption becomes particularly pronounced when the virtual machine platforms are arrayed as virtual machine server farms. 
       SUMMARY OF THE PRESENT INVENTION 
       [0004]    The present invention addresses the power consumption problem of maintaining each virtual machine platform in a full power mode even when there are no user computers connected to the virtual machine platform in an active mode. 
         [0005]    To this end, the present invention provides a system, method and computer program for power management in a virtual machine environment that includes at least one physical virtual machine platform providing a plurality of virtual machines, and a plurality of separate (user) client devices each connected to a respective one of the virtual machines in a typical virtual machine distribution environment. Client devices are understood to include user computers and computer subsystems, including printers, disk drives and serial ports, among others. In the description of the following invention, when the term user computer is used, it is intended to include all such client devices. 
         [0006]    There is also provided a function, independent of the connections of the user computers or client devices to the virtual machines, for determining if each of said client devices connected to the virtual machines is in an active state together with a function for switching the virtual machine platform into a reduced power consumption state in the platform when all of the user computers connected to the virtual machines are in a non-active state. 
         [0007]    In preferred operations, the implementation of this invention is when the plurality of user computers are remote from the virtual machine platform, and there are networks, usually the Internet or Web (these two terms are used interchangeably in this description) for respectively connecting the plurality of user computers to the virtual machine platform. 
         [0008]    As set forth above, the present invention is particularly advantageous in systems, e.g. virtual server farms, wherein there are a plurality of the virtual machine platforms, each platform respectively providing a plurality of virtual machines, together with a plurality of user sets, each user set including a plurality of user computers or devices respectively connected to the virtual machines in one of the plurality of virtual machine platforms, so that the means for switching switch a respective one of the virtual machine platforms into a reduced power consumption state when all of the user computers or client devices connected to virtual machines in the respective one platform are in a non-active state. Such an implementation may be effectively used when the plurality of the virtual machine platforms provide servers arranged as a virtual server farm, and each of the plurality of sets of user computers are client devices or user computers connected to the virtual machines in the respective servers. 
         [0009]    As will be hereinafter set forth in greater detail, in a preferred embodiment of this invention, the implementation for switching the virtual machine platform into the reduced power state is in the virtual machine platform and the means for communicating whether each of said computers are in a non-active state are connected to the means for switching by a path independent of an operating system of said virtual machine platform. This path for communicating the non-active state is connected to the Basic Input Output System (BIOS) firmware of the virtual machine platform by a route independent of said hypervisor of the platform. In such an arrangement, the virtual machine platform includes a baseboard management controller (BMC) having a function for tracking the non-active states of the connected user computers and the path for communicating the non-active state is connected to the BIOS through the BMC. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0010]    The present invention will be better understood and its numerous objects and advantages will become more apparent to those skilled in the art by reference to the following drawings, in conjunction with the accompanying specification, in which: 
           [0011]      FIG. 1  is a generalized diagrammatic view of a network portion, including a single representative virtual machine platform and a set of remote user computers or client devices connected to virtual machines in the platform to illustrate the non-active state monitoring of the user computers; 
           [0012]      FIG. 2  is a diagrammatic view like that of  FIG. 1  showing a plurality of virtual machine platforms respectively connected to a plurality of sets of user computers; 
           [0013]      FIG. 3  is a general flowchart of a program set up to implement the present invention for power management in a virtual machine environment; and 
           [0014]      FIG. 4  is a flowchart of an illustrative run of the program set up in  FIG. 3 . 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
       [0015]    Referring to  FIG. 1 , there is shown a generalized diagrammatic view of a network portion, including a single representative virtual machine platform  20 , and a set of remote user computers, i.e. client devices, Desktops  1 ,  2  and n connected via network  10 , e.g. the Web, and respective servers S 1 , S 2  and Sn, to virtual machines, VM 1 , VM 2  and VMn in the platform, using operating systems OS 1 , OS 2  and OSn. 
         [0016]    The assignment of specific virtual machines, VMs to specific user computers, desktops  1  through n, is allocated by hypervisor  21 , the virtual machine platform supervisor. The hypervisor manages the multiple operating systems, OS 1 -OSn, as well as the platform&#39;s processor, BIOS  22 , memory and other resources as required. Since this is a virtual machine platform, the hypervisor may be considered to be a virtualization manager. Current conventional VM connection brokers (not shown) operate to assign the currently running virtual machines on platform  20  to specific client devices illustrated by user desktops  1  to n. However, such connection brokers are only involved in the login and disconnect processes. Thus, if a particular desktop  1 ,  2  or n logs in and then is idle, the particular assigned VM and its associated resources in the virtual machine platform  20  remain fully powered irrespective of the non-activity of assigned user desktop  1  through n computers. 
         [0017]    Accordingly, the present invention provides an implementation independent from the operating systems and the hypervisor  21  of the platform  20  to detect non-activity of the allocated user desktop  1 - n  computers. Thus, in the environment of  FIG. 1 , the hypervisor, which may be commercially available in a VMware, Citrix or Calista environment, has an individual software component working with hardware compression engines that allow the multiple users (desktops  1 - n ) to access the same platform  20 . Thus, when the platform hardware is powered on, the hypervisor allocates memory resources specific for that user. When the user no longer requires the resources, e.g. logs off, the resources are released back into the platform pool. However, the platform  20  remains fully powered on and fully functional, even though the platform is no longer required. 
         [0018]    The present invention, as will be hereinafter described in greater detail, provides for putting the platform into a lower power consumption state when virtual machine resources (processor, memory, operating system and application software) are no longer required by the user computers o client devices, i.e. all are in the non-active state; but when a user computer or client device does require the use of a VM supported by the platform, i.e. the user computer becomes active, the platform  20  exits the low power state and becomes fully operational. 
         [0019]    The implementation of the present invention takes advantage of existing apparatus for changing power states of a virtual machine platform  20 . The BIOS  22  provides industry standard Advanced Configuration and Power Interface (ACPI) states that are able to remove power from different parts of the platform  20 . 
         [0020]    In the implementation of the invention, there is a path through network  10  (may be the Internet or Web) via connection  11  through ASIC (Application-Specific Integrated Circuit) compression core  12  wherein the user desktop  1 - n  computers may be respectively connected to their allocated VM  1 - n  and operating system OS 1 - n . This is controlled by hypervisor  21 . The ASIC compression core enables data from the user computers, desktops  1 - n , to be suitably compressed so as to be most efficiently stored in association with the virtual machine platform for usage by the virtual machines to which the data is illustrated to be applied via connections  13 ,  14  and  15 . Standard ASIC cores are described in the publication:  Data compression technology in ASIC cores,  S. H. Burroughs et al., in the  IBM Journal of Research and Development,  Volume 42, Number 6, 1998. 
         [0021]    The tailoring of the ASIC core has sufficient flexibility so that a connection  16  may be formed from ASIC Compression Core  12  through the Baseboard Management Controller (BMC)  17  in the platform  20  directly into BIOS  22 . BMC is a conventional specialized mini-controller embedded in a conventional server computer baseboard that functions as the intelligence using the conventional Intelligent Platform Management Interface (IPMI). The BMC, thus, functions to manage the interface between the system management software and the platform hardware. 
         [0022]    As will be hereinafter described in greater detail with respect to the program of this invention, which may be stored in the hypervisor  21 , the BMC  17  tracks the number of users in the environment of the virtual machine platform  20 . When a session between a client device (user desktop) and its allocated VM is tracked to have been non-active for a predetermined period, the BMC removes the user computer from the activity pool. Each entry and exit from the non-activity state is logged for each client device or user computer. In an embodiment to be described with respect to  FIG. 4 , use is made of an embedded activity timer proved in standard ASIC cores. The BMC sets a timer when activity for a particular user computer stops. Then, upon time expiration the non-active user computer is removed from an activity tracking table located in the BMC through input to the BIOS  22 . With this implementation, the tracking and communication of the active and non-active states of the user computers or client devices is carried out independent of the operating systems and hypervisor of the virtual machine platform, allowing independent control of the low power states for the virtual machine platform. 
         [0023]    Now, with reference to  FIG. 2 , there will be shown the implementation for power management as applied in a system that has multiple virtual machine platforms (A-N) respectively connected to a plurality of sets of user computers (client devices). Such an arrangement is utilized in virtual machine environments used for virtual server farms. In such an arrangement, each Platform A-N may each function independently in the manner described for the virtual machine platform of  FIG. 1 . For convenience in illustration, elements  111  through  117  and  120  through  122  in Platform N correspond to and function in the same manner as described above for elements  11  through  17  and  20  through  22  in Platform A. 
         [0024]      FIG. 3  is a flowchart showing the development of a process according to the present invention for power management in a virtual machine environment. In a multi-virtual machine platform environment, an implementation is provided wherein each virtual machine platform has a plurality of virtual machines, each of which is adapted to be connected to one of a plurality of user computers (client devices), step  71 . Provision is made to connect the user computers of step  71  to a virtual machine via a network, step  72 . Provision is made for monitoring (independently of any connection in step  71 ) whether each of the plurality of computers is in the active state, step  73 . Provision is made for determining if all of the plurality of connected computers are in the non-active state, step  74 . Provision is made for the switching of the virtual machine platform into a reduced power consumption state responsive to a determination in step  74  that all of the connected computers are in the non-active state, step  75 . Provision is made for controlling the switching of step  75  within the virtual machine platform wherein communication as to whether the connected computers are in a non-active state is by a path independent of the operating system of the virtual machine platform, step  76 . Provision is made for communicating the non-active states determined in step  76  directly to the BIOS of the virtual machine platform, step  77 . 
         [0025]    The running of the process set up in  FIG. 3  is described with respect to the flowchart of  FIG. 4 . Initially, step  81 , the system has been powered on. Accordingly, there are remote user computers (client devices) connected, step  82 . A counter is set (step  83 ): 
         [0000]      Users Active=Remote users+1 
         [0000]    A determination is then made, step  84 , as to whether there has been a change in remote user computer activity, step  84 . If Yes, then, step  85 , a determination is made as to whether there has been an interrupt (or change) in the activity of a remote user, step  85 . In this step, a user can connect, disconnect or become inactive (if the user&#39;s activity timer has expired). If Yes, there has been a user activity interrupt, the remote user has disconnected from the active state, step  86 . Then the counter is changed (step  87 ): 
         [0000]      Users active=users active−1 
         [0000]    A determination is then made (step  88 ): 
         [0000]      Active users=0, step  88   
         [0000]    If No, the flow is branched back to step  84  and the process continued. If Yes, step  89 , there is a BIOS/ACIP interrupt in the virtual machine platform to allow the system into a low power “S 3  Sleep” state. The BIOS then advises the hypervisor for the platform to save the contexts, step  90 . In this low power consumption sleep state, the activity of the remote user computers continues to be monitored, step  90 , for a change back to a remote user activity state. If Yes, then step  91 , there is a BIOS/ACIP change in the virtual machine platform into a high activity power-on “S 5 ” full power state. The BIOS then advises the hypervisor for the platform to restore the contexts, step  92 . 
         [0026]    Although certain preferred embodiments have been shown and described, it will be understood that many changes and modifications may be made therein without departing from the scope and intent of the appended claims.