The goal of autonomic computing is to create computing systems capable of managing themselves to a far greater extent than they do today. This paper presents Unity, a decentralized architecture for autonomic computing based on multiple interacting agents called autonomic elements. We illustrate how the Unity architecture realizes a number of desired autonomic system behaviors including goal-driven self-assembly, self-healing, and real-time self-optimization. We then present a realistic prototype implementation, showing how a collection of Unity elements self-assembles, recovers from certain classes of faults, and manages the use of computational resources (e.g. servers) in a dynamic multiapplication environment. In Unity, an autonomic element within each application environment computes a resourcelevel utility function based on information specified in that application’s service-level utility function. Resource-level utility functions from multiple application environments are sent...
Gerald Tesauro, David M. Chess, William E. Walsh,