In the latter half of the twentieth century, there began a phenomenon known as the information revolution. While the information revolution is a historical development broader in scope than any one event or machine, no single device has come to represent the information revolution more than the digital electronic computer. The development of computer systems has surely been a revolution. Each year, computer systems grow faster, store more data, and provide more applications to their users.
A modern computer system is an enormously complex machine, usually having many sub-parts or subsystems. Typically, the system comprises one or more central processing units (CPUs) which form the heart of the system, and which execute instructions contained in computer programs stored in memory. The system further includes data storage devices, such as rotating disk drives, and hardware necessary to communicate with the outside world, such as input/output controllers; I/O devices attached thereto such as keyboards, monitors, printers, and so forth; and external communication devices for communicating with other digital systems.
Computer systems, and particularly large multi-user computer systems, typically have many components which can be configured to operate or interact in a variety of different ways. Various configuration parameters specify modes of operation, resource allocation, operating speeds, limits, and so forth, of these components. These configuration parameters are subject to change, sometimes as a result of automated processes, sometimes through manual intervention by a system administrator, user, or other person.
One example of configuration variability is logical partitioning. Conceptually, logical partitioning means that multiple discrete partitions are established in a single hardware system, and the system resources of certain types are assigned to respective partitions. For example, processor resources of a multi-processor system may be partitioned by assigning different processors to different partitions, by sharing processors among some partitions and not others, by specifying the amount of processing resource measure available to each partition which is sharing a set of processors, and so forth. Memory or other resources may also be partitioned. In general, tasks executing within a logical partition can use only the resources assigned to that partition, and not resources assigned to other partitions.
Nearly any configuration parameter of a computer system may affect how executing tasks perform, and ultimately the efficiency of the system as a whole. These effects may be severe, causing drastic loss of system efficiency and/or unacceptable response time. Different components interact in many complex ways, so that a parameter with respect to one component may affect the performance of many others.
It is extremely difficult to model or predict in advance the effect of configuration changes or the performance of hypothetical configurations. Moreover, the computer system and its environment are very dynamic. Some configuration parameters are subject to frequent change by automated processes. Workload changes, randomly, periodically, and as a result of long-term trends. User expectations change. Managing system configuration parameters for optimum efficiency in a large computer system can therefore be a daunting task.
Conventional methods for managing configuration parameters often involve gathering substantial amounts of performance data over relatively long intervals and analyzing that data to model the system, identify probable sources of system inefficiency, and predict the effect of configuration changes. This analysis is often performed manually by human experts, although there are analytical programs which can be used for this purpose, either alone or in conjunction with human expertise. The use of human experts necessarily means that considerable cost is involved in this process. Moreover, the need to collect a large amount of data and perform complex analysis generally means that the analysis and consequent actions are performed well after the data collection, and can not respond to rapid changes in real time. Finally, modeling of hypothetical configurations is difficult to perform reliably and accurately for all possible permutations of system hardware and software, workload, and configuration parameters.
With increasing complexity of computer systems, there is a need for improved techniques for managing configuration parameters in a computer system.