An automated system adaptation technique for computer systems, networks and subsystems
generally and, more particularly, for data storage systems. The invention programmatically
designs, configures and manages a system, such as a data storage system. This is
accomplished by performing a sequence of steps in an iterative loop, including
analyzing the operation of the system under a workload, generating a new design
based on the analysis and migrating the existing system to the new design. By systematically
exploring a large design space and developing designs based on analyses of the
workload, the invention generates designs that are improved in comparison to conventional
design techniques. By programmatically repeating these tasks, the invention causes
the system to converge to one that supports the workload without being over-provisioned.