Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications

A method of managing resources in a data processing configuration includes allocating system resources to an application to ensure a specified level of performance for the application. A system parameter is then modified to conserve power consumption upon detecting a condition resulting in a reduction of available system power. The original system resource allocation is then modified to maintain the specified level of performance following the modification of the system parameter. The system resources may include system CPU cycles and allocating system resources may include allocating a specified percentage of the CPU cycles to a high priority application. The reduction of available system power may be caused by an excessive ambient temperature or the failure of a power supply. Modifying the system parameter to conserve power consumption includes throttling the CPU speed and then dynamically increasing the percentage of CPU cycles allocated to the high priority application.

BACKGROUND

1. Field of the Present Invention

The present invention is in the field of data processing systems and, more particularly, data processing systems that employ CPU throttling.

2. History of Related Art

In the field of data processing systems and, more specifically, server systems, resource management software allows administrators to allocate CPU time to specific applications running under the server's operating system. The resource management software can allocate CPU cycles to applications such that, for example, high priority applications can be guaranteed a minimum percentage of CPU cycles. This type of resource management beneficially enables administrators to permit low priority applications to execute without substantially degrading the performance of high priority applications.

Typically, resource management software has been applied in the context of a static performance environment. More specifically, resource allocations made by resource management software assume that the CPU speed is a fixed parameter. The assumption of a constant clock speed, however, is no longer universally accurate. In an effort to address power consumption issues, techniques for modifying the CPU clock speed have emerged. CPU's that execute at slower clock speeds consume less power than comparable CPU's running at higher clock speeds. When a CPU's clock speed is reduced in an effort to conserve power, performance guarantees based on allocating CPU cycles to high priority applications may require adjustment. Unfortunately, conventional implementations of system manager resources do not account for the potential affect that CPU throttling may have on performance guarantees (also referred to herein as service level agreements or SLA's). It would be desirable to implement system management resources that dynamically adjust the factors required to honor performance guarantees when system conditions, such as available power, change.

SUMMARY OF THE INVENTION

The identified objective is addressed according to the present invention by a method of managing resources in a data processing configuration. Initially, resources are allocated to an application to ensure a specified level of performance for the application. A system parameter is then modified to conserve power consumption upon detecting a condition resulting in a reduction of available system power. The original system resource allocation is then modified to maintain the specified level of performance following the modification of the system parameter. The system resources may include system CPU cycles and allocating system resources may include allocating a specified percentage of the CPU cycles to a high priority application. The reduction of available system power may be caused by an excessive ambient temperature or the failure of a power supply. Modifying the system parameter to conserve power consumption includes throttling the CPU speed and then dynamically increasing the percentage of CPU cycles allocated to the high priority application.

While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description presented herein are not intended to limit the invention to the particular embodiment disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF THE INVENTION

Before describing specific features of a network or server that includes the dynamic resource allocation features of the present invention, selected elements of a data processing system suitable for use in implementing the network or server are described. Turning to the drawings,FIG. 1illustrates selected features of a data processing system100suitable for use in a data processing network or server according to one embodiment of the invention. Data processing system100may be implemented entirely upon a single printed circuit board or “blade.” Thus, data processing system100may be referred to herein as server blade100. In the depicted embodiment, server blade100includes a set of main processors102A through102N (generically or collectively referred to as processor(s)102) that are connected to a system bus104. A common system memory106is accessible to each processor102via system bus104. The system memory is typically implemented with a volatile storage medium such as an array of dynamic random access memory (DRAM) devices. The depicted architecture of server blade100is frequently referred to as a symmetric multiprocessor (SMP) system because each processor102has substantially equal access to system memory106.

In server blade100, a bus bridge108provides an interface between system bus104and an I/O bus110to which one or more peripheral devices114A through114N (generically or collectively referred to as peripheral device(s)114) as well as a general purpose I/O (GPIO) port112are connected. Peripheral devices114may include devices such as a graphics adapter, a high-speed network adapter or network interface card (NIC), a hard-disk controller, and the like. I/O bus110is typically compliant with one of several industry standard I/O bus specifications including, as a common example, the Peripheral Components Interface (PCI) bus as specified inPCI Local Bus Specification Rev2.2 by the PCI Special Interest Group (www.pcisig.com).

The depicted embodiment of server blade100includes a service processor116connected to GPIO port112. Service processor116is configured to provide support for main processors102. This support may include, for example, monitoring the power supplied to main processor(s)102and, in the event of a blade crash, initiating a restart of the main processors.

Turning now toFIGS. 2A and 2B, front and rear views respectively of an embodiment of a data processing network or server (generically referred to herein as a data processing configuration)200are illustrated. As shown in the front view ofFIG. 2A, data processing configuration200includes a cabinet (or chassis)201having a plurality of slots202in its front face203. Each slot202is configured to receive a printed circuit board-based system such as a server blade100. (The set of server blades depicted inFIG. 2are identified by reference numerals100athrough100n). Each server blade100is plugged into an interconnection (not depicted) referred to herein as the mid-plane because of its intermediate location between server blades100and other adapters or blades that are plugged into the opposite side of the mid-plane from the rear face of cabinet201(seeFIG. 2B). In this embodiment, the interconnected server blades100in configuration200are suitable for implementing a local area network (LAN) such as an Ethernet LAN in which each blade100has its own IP address and Media Access Control (MAC) address. Configuration200may itself be connected to an external network such as the Internet through a gateway (not depicted) or other suitable network device.

The number of server blades within cabinet201varies with the implementation. In a representative configuration, the front face203of cabinet201includes14or more slots202for receiving server blades100. Each server blade100is typically a full-height adapter.

The rear view of data processing configuration200depicted inFIG. 2Billustrates additional selected elements of the configuration. More specifically, the rear face205of cabinet201includes a set of half-height slots204. Various half-height modules or blades are plugged into the previously mentioned mid-plane via slots204in rear face205. In the depicted embodiment, these modules include a set of network interconnect modules identified by reference numerals210a,210b,210c, and210d, a pair of power supply modules220aand220b, and first and second system management modules120aand120b(generically or collectively referred to as management module(s)120). Also shown are a set of cabinet cooling fans230. It will be appreciated that the number of network interface modules210, power supply modules220, and cabinet cooling fans230is implementation specific. Network interface modules210provide connectivity between the server blades100and an external network such as the Internet. In one embodiment, each server blade100is configured with four independent network connection paths via the four separate modules210athrough210d. The power supply modules220aand220bprovide configuration200with the required voltage levels.

Generally speaking, each management module120is configured to monitor and control resources and characteristics of elements of data processing configuration200that are shared by each server blade100. These resources and characteristics may include, for example, the available power, cabinet cooling fans, and environmental characteristics such as the ambient temperature within cabinet201. Although multiple and potentially redundant management modules120are depicted, other implementations may include just a single management module.

Portions of the present invention may be implemented as a sequence of processor executable instructions (software) for dynamically allocating system resources to maintain service level agreements in the face of altered system resources where the instructions are stored on a computer readable medium. During execution, portions of the software may reside in a volatile storage element such as the system memory106associated with processors102. At other times, portions of the software may be stored on a non-volatile storage medium such as a floppy diskette, hard disk, CD ROM, DVD, magnetic tape, or other suitable storage medium. In addition, portions of the software may be executed by management module120while other portions are executed by service processors116of each server blade100.

Referring toFIG. 5, software elements of an embodiment of the present invention are depicted. In the depicted embodiment, data processing configuration200includes resource management code502, a resource allocator code module504, a CPU throttling code module506, and a code module508for monitoring system environment parameters including ambient temperature and power supply status. Resource allocator code module504enables an administrator to dedicate portions of system resources on a per-application basis. In one embodiment particularly germane to the present invention, resource allocator code module504permits the administrator to implement service level agreements by guaranteeing a specifiable percentage of total CPU cycles on a per-application basis.

CPU throttling code module506, as its name implies, enables CPU throttling on data processing configuration200. CPU throttling refers to deliberately changing the operating frequency of a system's CPU's, typically in an effort to conserve power consumption. Under appropriate stimulus, CPU throttling code module506executes commands that effect a modification of the basic clock speed at which the CPU's of data processing configuration200are operating. In the most likely implementation, the CPU's of data processing configuration200are capable of operating at two or more discreet clock frequencies. CPU throttling code communicates with operating system code and low level code (such as system BIOS) to modify the operating frequency (clock speed) of the CPU's.

In the implementation depicted inFIG. 5, CPU throttling code module506communicates with environmental monitoring code module508. Environmental monitoring code module508receives inputs from environmental sensors such as temperature sensors520and power supply sensors530. The power supply sensors530provide information about the status of the power modules220(FIG. 2B) of data processing configuration200while temperature sensors monitor ambient temperature and possible the temperature of critical components such as the CPU's.

If environmental monitoring code module508receives a sensor input indicating a condition that reflects or requires a reduction in the power available to data processing configuration200, environmental monitor code508transmits a message to CPU throttling code module506. CPU throttling code module, in turn, invokes code to slow down the CPU's of data processing configuration200.

Resource allocation code module504communicates with CPU throttling code module506. In response to detecting a throttling or other modification of the CPU speed by CPU throttling code module506, resource allocation code module504is configured to evaluate the determine, based on the new CPU speed, how best to allocate the CPU cycles to maintain and honor any service level agreements that are in place. Typically, a reduction in CPU speed requires an increase in the amount of CPU cycles guaranteed to a particular application if the performance level is to be maintained.

In addition to being enabled to recognize a decrease in available system power, data processing configuration200and code modules504and506are preferably configured to recognize conditions that enable an increase in available system power. Under such conditions, CPU throttling code506may increase the speed of the CPU's and resource allocation code module504can respond by reducing the percentage of CPU cycles allocated to high priority applications, thereby potentially improving the performance of lower priority applications (without adversely impacting the performance level of the high priority applications).

Turning now toFIG. 3, a flow diagram of a method300of allocating resources within a system such as data processing configuration200is presented. As depicted inFIG. 3, method300is initiated when system resources such as the CPU resources within data processing configuration200are allocated (block302). In accordance with one application of the present invention, the allocation of system resources in block302includes invoking resource management code, most likely implemented in a management module120of data processing configuration200operating in conjunction with agents installed on each server blade100, to allocate or reserve CPU cycles to at least some applications executing on data processing configuration200. More specifically, allocation of CPU cycles according to one application of the invention, includes supporting a server level agreement by assigning a specified percentage of total CPU cycles to at least one high priority application.

After allocating system resources as desired, execution of one or more of the application programs proceeds and one or more system parameters are monitored (block304). The system parameters being monitored refer to parameters that may have an impact on the ability of the system to maintain the CPU speed at the speed required to support any service level agreements represented by the resource allocations that were made in block302. These monitored parameters include global, environmental parameters such as the amount of power available and the operating temperature of the data processing configuration200.

If the monitored parameters are within a specified threshold (as determined in block306), monitoring continues. If the monitored parameters are no longer within specified limits, a secondary system parameter is modified (block307) to address the problem noted with the primary parameter. If, for example, the monitored parameter is indicative of the available system power, the secondary parameter modified in block307may include the operating speed of the CPU's.

In block308, the resource allocations made in block302are adjusted dynamically in response to the modification of the secondary parameter. Preferably, the resource allocations, after adjustment, are sufficient to maintain all existing service level agreements. When the resource adjusted in block307is, for example, achieved by decreasing the speed of the CPU's, the allocation adjustment of block308likely includes increasing the allocation guarantees of high priority applications such that high priority applications do not suffer a performance drop-off at the new CPU speed.

Referring now toFIG. 4, a flow diagram illustrates additional detail of an implementation of the method300depicted in the flow chart ofFIG. 3. In the implementation depicted inFIG. 4, a method400includes the allocation (block402) of CPU cycles to achieve performance guarantees or honor service level agreements for a selected set of high priority applications, of which there may be one or more. After establishing the CPU allocations required to support the service level agreements under the initial conditions of the system, the system parameters are monitored (block404), most likely by the resource management code or other code executing on the management module(s)120ofFIG. 2.

The resources monitored in block404include the power supply status and the ambient temperature. Management module120monitors status of each power supply module220in data processing configuration200. Using information that may be stored in a special purpose, non-volatile storage element, referred to as vital product data (VPD), management modules120can determine the aggregate amount of power available in each power domain. A power domain refers to the resources that receive power from a common power module120.

If, in block406, the monitored temperature is determined to exceed a specified threshold or, in block408, the amount of power available is less than a specified threshold, such as when a power supply fails, corrective action is taken. Specifically, the CPU speed is reduced or throttled (block420) either to accommodate the lower level of available power or to reduce the power consumption in an effort to reduce the operating temperature. Management modules120may determine the maximum CPU speed that can be accommodated at the available level or power. To make this determination, the management modules access information that correlates available power and CPU speed. This power/speed information may be stored locally within the service processor116of each server blade100. Alternatively, the power/speed information may be provided as a part of each server's VPD or in some other repository of CPU parameters.

When the resource management module determines that throttling is required to accommodate a reduction in available power, management module120may inform each service processor116of the new CPU speed. Service processors116, in conjunction with server blade BIOS, will adjust the CPU speed accordingly. The management module120will then inform resource management code502(FIG. 5) that the blade CPU's have been throttled. Returning toFIG. 4, resource management module502will then dynamically reallocate (block422) CPU cycles to maintain the performance of high priority applications. In the event that not all high priority applications can be accommodated at the lower CPU speeds, resource management code module502will notify the user, thereby perhaps prioritizing the correction of the underlying thermal or power supply problem.

When a failed power supply is replaced or a thermal problem has been resolved, the environmental monitoring code508ofFIG. 5will preferably detect that the monitored temperature has dropped below a specified threshold (block410) or that the available power has increased (block412). In either case, the implication is that data processing configuration200can accommodate more power consumption. Accordingly, CPU throttling code module506is invoked to increase (block430) the CPU speed to a level appropriate for the amount of available power and the resource management code module502is invoked to re-allocate (block432) the CPU cycles accordingly.

In the manner described above, the present invention beneficially reconciles the ability to allocate resources as needed on a per-application basis with throttling techniques that are typically invoked when power consumption is implicated. The invention extends the usefulness of resource allocation techniques by making the resource allocation functionality adjustable to environmental conditions of the server or system. Thus, it will be apparent to those skilled in the art having the benefit of this disclosure that the present invention contemplates a mechanism for dynamically allocating resources in the face of varying system parameters. It is understood that the form of the invention shown and described in the detailed description and the drawings are to be taken merely as presently preferred examples. It is intended that the following claims be interpreted broadly to embrace all the variations of the preferred embodiments disclosed.