Nowadays the complexity of computing systems is skyrocketing. Programmers have to deal with extremely powerful computing systems that take time and considerable skills to be instructed to perform at their best. It is clear that it is not feasible to rely on human intervention to tune a system: conditions change constantly, rapidly, and unpredictably. It would be desirable to have the system automatically adapt to the mutating environment. This work on Self-changing (Self-aware and Self-adaptive) systems analyzes the stated problem, embraces a radically new approach, and lays the foundations of a framework that enables software and hardware systems to adjust during execution.
In this paper we present an architecture that augments current computing systems through the Observe–Decide–Act (ODA) loop mechanisms, which provide the capability of observing the status and the performance of a given system, of deciding which modifications to undertake in order to optimize certain operations, and of enacting such modifications. Observation is carried out through the use of specific components called sensors, which gather various types of information about the system; actions are undertaken by modules usually called actuators (or services); decisions are taken by a precise element called decision engine, which gathers all sensorial experience and steers actuators through a policy that might be a simple heuristic or a more sophisticated reinforcement learning agent capable of dynamically adapting to the environment. The adoption of the ODA approach stands as one of the first steps towards making it possible to build systems capable of reacting to unfavorable, unpredictable, and unknown situations. Such systems are called self-adaptive or autonomic systems and they are part of the paradigm shift towards goal-orientation; one of their property in fact is that they know their objectives (the what) but they might not know the way (the how) to reach them or they might adapt their execution path depending on the context.
Self-changing
software
This work introduces the complete architecture to build such types of systems in the context given by the Computing In Heterogeneous Autonomous aNd Goal-oriented Environments (CHANGE) project, a research initiative of the Laboratory of Micro-architectures at the Politecnico di Milano in collaboration with the Massachusetts Institute of Technology (MIT) Computer Science and Artificial Intelligence Laboratory (CSAIL). The starting point is an open-source performance monitoring facility developed at the MIT CSAIL called Application Heartbeats API. The Application Heartbeats are a simple, lightweight, yet powerful mechanism to supervise the performance of given targets. Building on the top of that particular kind of sensors, we have developed a decision engine (called Consensus Object), actuators, and the communication infrastructure to link such components. In particular we have designed and implemented: a centralized decision entity, which gathers all the information about system performance and which is able to decide which measures to enact; the communication channels through which the decisions are conveyed; the elements that commit changes to the environment in different possible ways. Much attention is provided to the decision algorithm that drives the behavior of the Consensus Object; in particular, after analyzing several different machine learning techniques, we have chosen to embrace reinforcement learning as the foundation for the decision engine. This approach does not precompute a model of the environment; it interacts with the system obtaining rewards when certain conditions are achieved (i.e., all the performance goals are accomplished) and learning which actuators to enable from past rewards. Moreover all the communication channels between elements of the system have been deeply optimized in order to reduce the overhead of the whole infrastructure.
The novel contribution of this thesis is to provide a framework to build autonomic systems that is:
-complete, since it implements the ODA concepts (monitoring, decision, and enactment)
-simple yet capable of being used in complex scenarios
-lightweight, since it has a low overhead both on the monitored applications and on the handled actuators
-flexible, as a result of the machine learning capabilities, in order to be able react to changing conditions.
Such characteristics, along with the encouraging experimental results, prove that the proposed solution has the potential to be extended and to transition from an enabling technology to a working product.
The Consensus Object: Coordinating the Behavior of Independent Adaptive Systems
Newest developments in the Consensus Object
Self-aware adaptation in FPGA-based systems
20th International Conference on Field Programmable Logic and Applications
Application Heartbeats: a technique for enhancing systems self-adaptability
Thesis at the University of Illinois at Chicago – Master of Science in Computer Science
Self-adaptability via heartbeats and central multi-application coordination
Thesis at the Politecnico di Milano – Master of Science in Computer Science
High level view of the system: the Consensus Object enables and disables services on any given application in order to make application reached the stated performance goals (for instance an application might want to produce not more than 40 and not less than 20 heartbeats per second).
A more detailed view of the system: service registration, heartbeats retrieval, Consensus Objects commands.