Abstract:
A method of analyzing the capacity of a computer system is described. The system is measured to obtain a datum population value N 1 . A maximum population value N 2  is calculated using queuing theory modeling. The maximum population N 2  is indicative of a maximum population that the system can sustain whilst satisfying a predetermined Service Level Agreement (SLA). A capacity map is then displayed to illustrate the ratio N 1 /N 2 . The capacity map shows the used and remaining capacity in relation to a given SLA.

Description:
FIELD OF THE INVENTION 
   The present invention relates to a method of analyzing the capacity of a computer system. 
   BACKGROUND OF THE INVENTION 
   Conventional tools for analyzing the capacity of a computer system provide performance metrics such as CPU utilization, memory and I/O usage, amount of network traffic etc. 
   For instance, the HP Glance tool provides four screens that show the CPU, disk, network and memory views of a server. 
   Tools also exist which collate data from many servers and show statistics like the CPU usage of the top ten servers; or the servers where the disk usage is greater than 90%. 
   Service Level Agreements (SLAs) are commonly provided which determine a minimum level of service to be provided by a computer system. Each SLA will include a maximum response time which is permitted under the SLA. 
   An object of the invention is to provide a method and associated apparatus which can indicate the capacity of a computer system relative to a predetermined SLA. 
   SUMMARY OF THE INVENTION 
   The present invention provides a method of analyzing the capacity of a computer system, the method including:
         a) measuring the system to obtain a datum population value which is indicative of a datum number of jobs;   b) calculating a maximum population value which is indicative of a maximum number of jobs that the system can sustain whilst satisfying a predetermined Service Level Agreement (SLA);   c) calculating a capacity indicator in accordance with the datum population value; and the maximum population value; and   d) outputting the capacity indicator.       

   Knowing the capacity of a system in relation to a given SLA is very useful in a number of scenarios. For instance it enables an administrator to makes decisions more easily on upgrading existing capacity, to ensure that SLAs are not violated. 
   Since the capacity indicator can be output as a single number, it requires only a small amount of bandwidth to be output. 
   Typically step c) includes the step of calculating the ratio between the datum population value and the maximum population value. In the exemplary embodiment below this ratio is N 1 /N 2 . Alternatively step c) may include the step of calculating the difference between the datum population value and the maximum population value (that is, the difference N 2 −N 1 ). 
   The capacity indicator may be output in any form. For instance the capacity indicator may be output in step d) to a controller which takes an automatic action in accordance with the value of the capacity indicator. The device may be a utility controller which provisions one or more additional processors if the value of the capacity indicator exceeds a threshold. Alternatively, or in addition to resulting in an automatic action, the capacity indicator may be output to a display device, in order to provide information to a system administrator or other person. The display device may provide a numerical indication of the capacity indicator, or more preferably the capacity indicator is displayed in a non-numerical graphical form. For instance the graphical form may comprise a shape which has a colored area with a size indicative of the capacity indicator. 
   Typically the maximum population value is calculated by calculating a response time associated with the maximum population value. 
   Typically the response time is modeled by analytical modeling, which uses a queuing network model for predicting the response time, typically along with other parameters such as, utilization, throughput and queue length. This enables the method to take into account queues that are forming in the system. An online book of queuing theory modeling for computer systems can be found in the text book “Quantitative system performance: computer system analysis using queuing network models”, by Edward D. Lazowska et al, Prentice Hall, Inc, 1984, ISBN 0-13-746975-6. However other ways of obtaining response time may be used, for example by simulation. 
   Typically the maximum population value is calculated by calculating a response time for a series of population values including the maximum population value. In one example the series of population values comprises a series of increasing population values. Alternatively the series of population values may be chosen as a series of “binary search” values. 
   The computer system may consist of only a single device, such as a central processing unit (CPU) or a storage element (such as a disk). Alternatively the system may include two or more devices, each device including a respective processing queue. A separate capacity indicator may be calculated and output for each device, or an aggregate capacity indicator may be calculated by aggregating across the two or more devices. In a preferred example the aggregate capacity indicator is normalized according to the relative speeds of the devices. 
   The computer system being analyzed may be only a single server, or may include two or more servers, each server including a central processing unit and one or more storage elements. 
   Thus a small display (per server) can be provided, or can be expanded to a business unit or geographical area. 
   The datum population value may be a current population value which is indicative of a number of jobs currently being handled by the system. This enables the capacity indicator to be used to monitor the performance of a system in real time. Alternatively the datum population value may be a proposed population value which is indicative of a number of jobs proposed to be handled by the system. This enables the capacity indicator to be used to show whether an additional job can be added without resulting in SLA violation. 
   The method may be used to analyze an existing computer system, or may be used to analyze a proposed system. Thus for example the method may be used to evaluate a “what if” scenario; for instance “what if” one of the devices in an existing system is removed—will this result in SLA violation? 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Embodiments of the invention will now be described, by way of example only, with reference to the accompanying drawings in which: 
       FIG. 1  is a schematic diagram of a computer network; 
       FIG. 2  is a schematic diagram of a server; 
       FIG. 3  is a flowchart illustrating the processes followed by the management console; 
       FIG. 4  shows three capacity maps; 
       FIG. 5  shows an alternative capacity map; and 
       FIG. 6  shows a screen displaying capacity maps for a number of servers. 
   

   DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
   Referring to  FIG. 1 , a computer system  1  includes a number of servers  2 ,  3 ,  4  etc. which are monitored by a management console  5 . 
   Each server  2 - 4  can be modelled schematically as shown in  FIG. 2 , and contains a number of server resources including a CPU  6 , and disks  7 . 
   Each server handles one or more applications. Each application is run by executing a series of processes. Each process is executed by utilising one or more of the server resources. It is assumed that any one process will only be utilising one of the server resources at any one time. Each resource includes a queue  8  for holding processes waiting to be executed. 
   Associated with each application is one or more Service Level Agreements (SLAs). In most cases the application will have only a single SLA which is the same for all servers. For example the SLA for the application may be R seconds i.e. the application must take less than or equal to R seconds for execution. However in rare cases the application may have different SLAs on different servers. For example one server may have a bigger memory cache than the others, or is itself faster, so may be expected to return responses faster than the other servers. In this case the SLA for that server will be shorter than for the other servers. 
   The management console  5  hosts a capacity planning engine computer program which is arranged to run the process illustrated in  FIG. 3 . The capacity planning engine takes as inputs system configuration data  10  (for example the number of servers, and the arrangement of resources for each server), performance metrics  11  (discussed below) and Workload Service Level Agreements (SLAs)  12  (that is, an SLA for each application currently being handled by a particular server), and runs a Mean Value Analysis (MVA) algorithm  13  that outputs utilizations, queue lengths and throughputs for each application. 
   Suitable tools for capacity modeling include BMC Predict and the Teamquest tool. A good overview of capacity modeling generally is “How to do Capacity Planning”. 
   The system configuration data  10  and performance metrics  11  are gathered by HP OpenView Performance agent. The performance metrics  11  include the parameters Alive Population, Active Population, and Completed Population, as defined below. 
   The management console  5  monitors each server over a measurement interval which is referred to below as the parameter Measurement Interval. In case of the OpenView performance tools, the measurement interval for process metrics is one minute and for other metrics is five minutes. During this interval, some processes will be created and some will be completed. Thus at any time during the measurement interval there will be a number of processes which are alive, that is they have been created but not yet completed. Say, at the start of the interval there may be 20 alive processes, during the interval  20  more are created and 10 are completed. So at the end of the hour there are 30 alive processes and 10 processes have been completed. The parameter Alive Population is the sum of the ratio alive-process-time/Measurement Interval for every process belonging to a given application, where alive-process-time is a parameter indicating the amount of time during the measurement interval in which the process is alive. The parameter Active Population is the sum of the ratio active-process-time/Measurement Interval for every process belonging to a given application, where active-process-time is a parameter indicating the amount of time during the measurement interval in which the process is consuming server resources. For example Active Population may have a value of 20. 
   The parameter Completed Population is defined as the total number of processes that completed during the measurement interval. 
   Table 1 below illustrates a four second interval for two processes, A &amp; B, for an application. 
   
     
       
             
             
           
             
             
             
             
             
           
             
             
             
             
             
           
         
             
                 
               TABLE 1 
             
           
           
             
                 
                 
             
             
                 
               Time (seconds) 
             
           
        
         
             
                 
               1 
               2 
               3 
               4 
             
             
                 
                 
             
           
        
         
             
               Process A 
               Alive 
               Alive 
               Alive 
               Alive 
             
             
               Process B 
               Alive/CPU 
               Alive/CPU 
               Alive 
               Dead 
             
             
                 
             
           
        
       
     
   
   Process A is alive for the entire four second interval but consumes no resources. A&#39;s contribution to Alive Population is 4*¼. A contributes 0*¼ to Active Population. B&#39;s contribution to Alive Population is 3*¼. B contributes 2*¼ to Active Population. Thus, for this interval, Active Population is 0.5 and Alive Population is 1.75. Because a process may be alive but not active, Active Population will always be less than or equal to Alive Population. 
   The parameter Completed Population for the measurement interval of Table 1 is 1 since process B died in the last second of the interval. 
   The measured response time is calculated from the performance metrics directly as follows:
         1. Calculate the measured throughput of an application as: Measured Throughput=(Active Population+Completed Population/Measurement Interval   2. Measured Response Time=Active Population/Measured Throughput       

   The parameter Modeled Response is calculated by performing MVA modeling on the basis of the configuration data  10  and performance metrics  11 . The performance metrics  11  include the parameters Alive Population, Active Population, and Completed Population as defined above, for each application currently being handled by the system. The metrics also include a parameter Application Service Demand which indicates the demand of a particular application. As part of the modeling process, a parameter Average Queue Length is calculated. This is the queue length averaged over all server resources and all applications for the measurement interval. For each application, a parameter Modeled Response Time can be calculated as Modeled Response Time=Application Service Demand*(1+Average Queue Length). 
   The parameter Modeled Response Time is essentially the time to service all the applications in the queue+the time taken to service the current application. 
   The modeled throughput can then be calculated as Active Population/Modeled Response Time. 
   After modeling, models are usually calibrated (by introducing suitable delays) to make Modeled Response Time close to Measured Response Time. 
   A worked example is now given for a server running four applications: network, Memory_management, other_user_root and ParentWorkload. With reference to  FIG. 3 , the MVA algorithm performs the baseline capacity modeling for the server (inclusive of the application of interest). The MVA algorithm may be embodied in computer software. The baseline capacity model for the workload other_user_root is shown below. 
   Workload Name: other_user_root 
   
       
       Alive Population=50 
       Active Population=26.96 
       Completed Population=2264 
       Measured Throughput=0.636378 
       Measured Response Time=42.3648 
       Modeled Throughput=0.613187 
       Modeled Response Time=43.85 
     
  
   As can be seen above, the modeled response time is 43.85 seconds for an Active Population of 26.96 processes. Assume that the SLA is 50 seconds. We would like to know how many application instances of other_user_root can be supported without SLA violation. Following the baseline calculation, the management console evaluates “what if” scenarios for increments of 10 to Active Population to give the following results: 
   
     
       
             
             
             
             
           
         
             
                 
                 
             
             
                 
               Active Population 
               Modeled Response Time 
               Capacity Map 
             
             
                 
                 
             
           
           
             
                 
               26.96 (baseline) 
               43.85 seconds 
               36.45% 
             
             
                 
               36.96 
               44.15 
               49.97% 
             
             
                 
               46.96 
               44.68 
               63.49% 
             
             
                 
               56.96 
               45.66 
               77.01% 
             
             
                 
               66.96 
               47.60 
               90.53% 
             
             
                 
               73.96 (maximum) 
               49.85 
                 100% 
             
             
                 
                 
             
           
        
       
     
   
   Computing “what if” scenarios for this workload showed that the response time would exceed the SLA of 50 seconds at an Active Population value of 73.96. Thus the maximum capacity for this workload on this server (assuming other workloads don&#39;t change) is 73.96. So the parameter Capacity Map for this workload on this server is defined as the current value for Active Population divided by the maximum value for Active Population (73.96 in this case). For instance, if the current value for Active Population is 60, then the application is running at 60/73.96=81.12% capacity. 
   Although an increment value of 10 is chosen above, other increment values could be used. Alternatively, instead of using fixed increments, the series of Active Population values may be chosen as a series of “binary search” values. That is, the first “binary search” value might be twice the baseline value, and if the response time associated with first “binary search” value exceeds the SLA, then the second “binary search” value is chosen to be 1.5 times the baseline value. Third, fourth etc. binary search values are then chosen in a similar manner until the Modeled Response Time approximates to the SLA. 
   The parameter Capacity Map can then be displayed at step  14  of  FIG. 3 , using one of the methods described below with reference to  FIGS. 4 to 6 . 
   Referring first to  FIG. 4 : if the ratio N 1 /N 2  is less than one, then an ellipse  30  is displayed with a yellow region  31  having an area N 1 /N 2  as a proportion of the total area of the ellipse. This yellow region  31  signifies the used capacity. The remaining region  32  having an area 1−N 1 /N 2  is colored green to signify the spare capacity. 
   If (1−N 1 /N 2 )&lt;0.05 then an ellipse  33  is displayed with the whole ellipse colored yellow to indicate that the server is approaching saturation and SLA violation. 
   If N 1 /N 2 &gt;1, then an ellipse  34  is displayed with the whole ellipse colored red. 
   A large number of ellipses (for instance up to 100) can be displayed at the same time, giving a good visual feel of the capacity of the system. 
   Alternatively, the capacity map can also be displayed in other forms. An example is shown in  FIG. 5 . In this case instead of displaying an ellipse, a rectangle is displayed with a dark area  35  indicative of the Capacity Map value. 
   A number of different example uses of the invention will now be described. 
   In a first example, the maps can be displayed to give a quick indication of how the machines in a logical grouping (e.g. a department or business unit) are doing with respect to capacity. An example of such a display is shown in  FIG. 6  for the system of  FIG. 1 . In this case, capacity map  60  shows the value for the server  2 , capacity map  61  shows the value for the server  3 , and capacity map  62  shows the value for the server  4 . 
   In a second example, the maps for all the servers could be aggregated to show one aggregated map for the entire department. This could be extended to show maps for all the departments in an organization or even all the branches of the organization in a geographical area. 
   The aggregated maps would show the capacity at different resolutions. For example a system administrator may wish to see the map for all applications on a single server. A data center IT manager may like to see the maps aggregated across all applications for all servers. A “line of business” manager may wish to see maps “entity-wise” or “geography-wise”. 
   The aggregated map may show the average of the Capacity Map parameter N 1 /N 2 . However a better alternative way would be to normalize the maps according to the relative server speeds and calculate a weighted average. 
   In a third example, capacity maps could be displayed on a “what if” basis. For instance a first capacity map may display a value of 70% for a D-class server, and a second capacity map would display the value for an N-class server. A capacity map can also be displayed for an application not running on the server provided one knows the demands on the CPU/disk for that application. 
   In a fourth example, the maps may be used as a tool for workload consolidation from an adaptive infrastructure point of view. For example the maps may be used to demonstrate a “what-if” scenario at an adaptive datacenter level, such as “what if I remove two servers?” If the capacity map for this datacenter is still all green, it will mean that two servers can be removed and used elsewhere. This of course implies that the application would be able to migrate vertically to another server and run there. 
   While the present invention has been illustrated by the description of the embodiments thereof, and while the embodiments have been described in considerable detail, it is not the intention of the applicant to restrict or in any way limit the scope of the appended claims to such detail. Additional advantages and modifications will readily appear to those skilled in the art. Therefore, the invention in its broader aspects is not limited to the specific details representative apparatus and method, and illustrative examples shown and described. Accordingly, departures may be made from such details without departure from the spirit or scope of applicant&#39;s general inventive concept. 
   A computer readable medium encoded with computer executable instructions which executed by the computer processor to perform the method steps.