Abstract:
Increased workload performance is obtained by coordinating a multi-resource computer system such that demands for resources are arbitrated across all available resources and all applications such that the proper resource will be adjusted regardless of which resource is needed to improve workload performance. In operation, a measurement is taken for each available resource to determine the enhancement achieved by adding a certain quantity of a resource. In one embodiment, resource consumption and performance data is collected over a period of time and that data is used to adjust resource requests for a workload in order to improve the workload&#39;s performance. The resource request is modified to deliver the most workload benefit for each resource modification.

Description:
FIELD OF THE INVENTION  
       [0001]     This disclosure relates to computer systems and more particularly to systems and methods for computer workload management.  
       DESCRIPTION OF RELATED ART  
       [0002]     Currently, computer goal-based workload management systems operate to adjust the CPU in response to an arbitrary measure of performance for any arbitrary workload. The key problem with this is that if a workload is not CPU intensive, the adjustment of CPU may not improve the performance of the workload.  
         [0003]     One option is to simply use resource utilization to adjust multiple resources. One problem with this approach is that it may waste resources because some applications may receive performance that far exceeds the requirements for the application. This problem is compounded in that workloads may react differently to the availability of different resources and an adjustment solution must work for any arbitrary workload and it must work for any measure of performance for that workload.  
         [0004]     Another issue is that a workload&#39;s performance may be impacted by resource contention caused by other workloads. Such contention can cause resource requirements to vary over time based on what the application is doing at the time and on the other applications that are running on the system at that time and what stage such application is in.  
         [0005]     In some arrangements, a computer system workload is affected by the amount and type of resources that are available to the workload at any particular time. Thus, when a workload is underperforming it is desirable to adjust the resources that are available to it.  
         [0006]     Current systems address a single resource and, hence, require separate resource allocation policies for each computer system resource that can be adjusted. These “single” resource management systems add complexity to defining a resource allocation policy for workload management systems.  
         [0007]     Workload management is the approach of adjusting resource entitlements (such as the number of CPUs, the amount of memory, etc.) to workloads based on workload performance data. When multiple resources are being adjusted it is difficult to determine which resource to adjust to achieve optimum results. It is also difficult to know how much a given resource change will improve the performance of the workload.  
         [0008]     As an example, if a system is measuring the response time of a workload and it has the ability to adjust the entitlements of, for example, CPU, memory, disk I/O bandwidth or network bandwidth, how does it know which of these should be adjusted to improve the response time of the workload? 
       BRIEF SUMMARY OF THE INVENTION  
       [0009]     There are disclosed systems and methods for coordinating a multi-resource computer system such that demands for resources are arbitrated across all available resources and all applications such that the proper resource will be adjusted to increase the proper workload performance regardless of which resource is needed to improve workload performance. In one embodiment, the system tracks performance data across all resources so that the system knows for all resources what to expect from a resource adjustment at any point in time. Using the system and methods disclosed, any desired resource adjustment is tempered to insure that maximum benefit is derived from such an adjustment. Arbitration is used to mediate between competing resource requests.  
         [0010]     In one embodiment, resource allocation vectors are used to determine allocation of resources that will improve a workload&#39;s performance. In operation, a measurement is taken for each available resource to determine the enhancement achieved by adding a certain quantity of a resource. In this manner a historical profile is created for a point in time dependant upon the workload&#39;s actual response at that time to changes in resource availability. When the performance of a workload requires enhancing by the adjustment of a resource, the historical profile is used as a vector by the workload policy controller to adjust resource to achieve the desired enhanced performance.  
         [0011]     In one embodiment, resource consumption and performance data is collected over a period of time and that data is used to adjust resource requests for a workload in order to improve the workload&#39;s performance. The resource request is modified to deliver the most workload benefit for each resource modification. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0012]     For a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:  
         [0013]      FIG. 1  shows one embodiment of a system having multiple resources available to a plurality of workloads;  
         [0014]      FIG. 2  shows one embodiment of a system for adjusting multiple resources for multiple applications;  
         [0015]      FIG. 3  shows one embodiment of a computer system having multiple resource capabilities; and  
         [0016]      FIG. 4  shows one embodiment of a process for controlling workload resource allocation. 
     
    
     DETAILED DESCRIPTION  
       [0017]      FIG. 1  shows one embodiment  10  of a multi-resource ( 11 - 1  to  11 -N) computer system serving workloads (applications)  12 - 1  to  12 -N. The resources are managed by workload management (WLM) tools  13  and  14 , working from input from adjust resource request  25 - 1  ( FIG. 2 ). Each WLM adjusts the amount of each resource required by application  1  or by any other application.  FIG. 1  shows two resources,  11 - 1  and  11 -N, which typically would be memory and CPU, but could be any resource(s), such as bandwidth, network, I/O bandwidth, kernel data structure space, process table entries, etc.  
         [0018]     WLM tools  13  and  14  are most likely a single instance of WLM and, as will be seen, operate to change the partitions  15 - 1  to  15 - 4  for each resource for each application as necessary.  
         [0019]     The structure shown in  FIG. 2  is one embodiment of a system for adjusting multiple resources for a single application.  
         [0020]      FIG. 2  shows one embodiment  20  of a system and method for adjusting multiple resources  11 - 1  to  11 -N for multiple applications  12 - 1  to  12 -N. Embodiment  20  can, if desired, be part of WLM  13 ,  14  or could be stand-alone on part of controller. The discussion of  FIG. 2  addresses only a single resource for each application, but multiple resources are considered for each application.  
         [0021]     For discussion purposes, let us assume that resource  11 - 1  is memory monitored by WLM tool  13  ( FIG. 1 ) and that resource  11 -N is CPU monitored by WLM tool  14  ( FIG. 1 ). The process starts with the collection of performance metrics by process  21 - 1  for application  1  as that application is running on the system. The collected data is then compared to the determined resource requirements by process  22 - 1  operating in conjunction with application  1  resource consumption profile  24 - 1 . Consumption profile  24 - 1  operates to add the proper measure of the resource based as calculated gain the most performance from the workload (application).  
         [0022]     Resource requirements can be based on a basic or sophisticated profile based controller algorithm. The resources that a workload (application) has available to it depends upon the workload&#39;s utilization of those resources. For example, if the workload is entitled to use 60 shares of CPU and is using 40, that is a 66% utilization of CPU. If the same workload has access to 2 Gigabytes of memory (not shown) and is using 1.5 Gigabytes, that is 75% utilization. If it has access to 2 Gigabytes/sec of network bandwidth and is using 1.9 Gigabytes, that is 95% utilization. A resource manager seeing that utilization is over a certain threshold level might then call for additional resources.  
         [0023]     It would be easy to look at these resource requests and assume that because network bandwidth is at 95% utilization the problem is with network capacity. This may or may not be a factor in slower than expected workload processing by calculating individual resource pressure. The system can, based upon a knowledge of how each resource impacts workload performance, adjust a resource request based on the likelihood that the request resource will actually help improve the performance workload. As an example, memory can be at 95% utilization. Adding memory will have no impact on performance since the workload&#39;s total data is already in memory. This is in contrast to the CPU rising above 80%, as it starts impacting performance due to process context switching being performed continuously. The time for such processing becomes excessive when CPU utilization goes above 80%.  
         [0024]     Based upon the input from process  22 - 1  and input from process  23 - 1  which collects the actual resource consumption by application  1 , process  25 - 1  issues commands for adjusting resource requests. These commands are sent to the proper WLM tool (in this case tool  13 ) to change the partition ( 15 - 1 ,  FIG. 1 ) for resource  11 - 1 . Process  25 - 1  can, if desired, examine resource performance patterns which reflect knowledge about how a particular resource impacts the performance of a workload this knowledge could be put into the system by a system user, but most typically would be gathered over time and stored, for example, in memory  15  ( FIG. 1 ). The purpose of this operation is to understand how adding (or removing) resources helps, does nothing or possibly hinders performance. Thus, as discussed above, a request for additional memory may not be the solution to a performance problem even if the memory is at 95% utilization.  
         [0025]     Process  25 - 1  adjusts the resource requests (for all resources for application  1 ) based on the utilization of the same resource in the prior interval and the pattern of how these resources impact performance and sends these requests to resource arbiter  26 . This can be done serially on a resource by resource basis, or all at one time, as desired.  
         [0026]     Thus, process for resource  11 -N (and for any other resource) is the same as for resource  11 - 1 , except performed by processes  21 -N through  25 -N. Note that while the processes for resources  11 -N are shown separately from the processes for resource  11 - 1 , they, in fact could be the same. Also note that while separate processes  21 - 1  to  25 - 1  are shown, they could also be a single process or any combination thereof.  
         [0027]     The process for application  12 -N (and for any other application) is the same as application  12 - 1 , which is performed by processes  21 -N through  25 -N, such that adjust source request  25 -N sends requests for all needed resources (with respect to application N- 1 ) to arbiter  26 . Arbiter  26  then determines the mediation between resources and between applications to maximize the overall system operation. Arbiter  26  can work on all resources or on one at a time, as desired.  
         [0028]     Note that while the processes for applications  12 -N are shown separately from the processes for applications  12 - 1 , they, in fact could be the same and used serially. Also note that while separate processes  21 - 1  to  25 - 1  are shown, they could also be a single process or any combination thereof.  
         [0029]      FIG. 3  shows one embodiment  30  of computer system  310  having multiple resource capabilities which resources can be used as needed to increase (or decrease) a workload&#39;s performance. In the embodiment of  FIG. 3  workload  31 - 1  can use CPUs  34 - 1  to  34 -N and memory  35 - 1  and I/O bandwidth  36 - 1  to  36 -N. Particular workload, such as workload  31 , typically has a single dimensional value (e.g., database transaction time) that is used to monitor performance. However, the workload&#39;s performance is a function of the allocation of multiple computer system resources (e.g., CPU, memory, I/O, etc.). The response to increasing one resource over another resource may be dramatically different. For example, some applications may not benefit at all from an increase in CPU resources, but instead may improve dramatically to increases in say, memory allocation.  
         [0030]     Workload manager (WLM)  48 , working with policy objects  47 - 1  to  47 -N control the resource allocation in conjunction with process  40 , as will be discussed with respect to  FIG. 4 .  
         [0031]      FIG. 4  shows one embodiment  40  of a process for controlling workload resource allocations such that process  401  in conjunction with WLM determines that a particular workload performance needs improvement.  
         [0032]     In process  402  the WLM determines the proportion (scalar) of the current allocation to reduce by using a previously calculated resource allocation vector (as will be discussed hereinafter). Process  403  calculates the workload allocation to equal the old allocation plus the proportion (resource allocation vector) to reduce or add the needed resources. Process  404  changes the resource allocation for the workload under control of the WLM.  
         [0033]     Note that as discussed above, processes  401  through  404  operate on the assumption that an allocation vector has previously been established for the next change to occur. If it is time for reestablishing an updated resource allocation vector, process  405  initiates process  407  which determines the resource type, i.e., CPU memory input/output, bandwidth, etc.  
         [0034]     Process  408  removes the target resource to be updated from the list of resource types available. Process  409  changes the allocation of the resource by delta units. Process  410  takes a measurement of the improvement in the workload performance; this is the improvement.  
         [0035]     Process  411  then normalizes the scalar by determining that the component equals the delta divided by the improvement. If the improvement is zero, then the component equals the minimum increment for this resource. This means that if there has been no improvement by increasing the resource there is no need to continue to change the resource.  
         [0036]     Process  407  then begins a process of iterations such that a different resource component is tested and if there are more resource types to be tested remaining then processes  408 ,  409 ,  410  and  411  continue. When all resource types have been tested, process  414  updates each resource allocation factor in the workload policy controller which is part of the WLM.  
         [0037]     Note that with processes  407 ,  408 ,  409 ,  410 ,  411  and  412 , each resource in turn is tested to determine what effect a change in that resource will have on the operation (performance) of the workload. Subsequently, this resource allocation vector is used in process  403 . This is done after process  402  in which WLM determines the magnitude (proportion) of the change in resource allocation needed by the workload. These settings are then maintained in WLM and used in processes  402 ,  403  and  404  to set the resource to the proper level when an adjustment in resources is necessary. Thus, in process  401  when the determination is made that a workload performance needs improvement, process  402  looks in its allocation of scalars and determines which scalars to apply to which resources and the resource is adjusted. From prior iterations it was known that a certain adjustment will result in a certain increase and so as a result when a resource is added it is highly likely that performance will be enhanced. Process  406  continues monitoring resource allocation that no updates are taking place.  
         [0038]     As discussed above, the initial unit of resource allocation is not critical, since it is the vector that determines which resource should be adjusted and by how much. The system effectively uses pre-profiling of each resource response to a particular workload after a certain period of time, or whenever a given resource allocation reaches its maximum (or minimum), the allocation vector is recalculated directly, as a moving average, or as a smoothed combination of previous vectors.  
         [0039]     Thus, as discussed, multiple computer system resources are considered when allocating resources to a workload so that the workload can meet its performance criteria. The systems and methods discussed herein make resource allocation policy definition easier by allowing for a single specification for multiple computer system resources, based on an historical response of the workload to changes in each individual resource allocation to the workload.  
         [0040]     As discussed, process  40  can run, if desired, in a global controller (not shown) or in one or more of the resource managers. Process  401  collects resource consumption data by extracting data from the system on a resource by resource basis to determine how much of each resource was consumed by the workload in the prior interval. This data can come from the resource managers or from other sources and can be stored in storage (not shown) if desired.  
         [0041]     Process  40  makes it possible to adjust multiple resource entitlements simultaneously and have a reasonable likelihood of making appropriate adjustments that will improve the response time of the workload, without wasting resources that are not likely to improve performance.