11 research outputs found
RAS-Models: A Building Block for Self-Healing Benchmarks
To evaluate the efficacy of self-healing systems a rigorous, objective, quantitative benchmarking methodology is needed. However, developing such a benchmark is a non-trivial task given the many evaluation issues to be resolved, including but not limited to: quantifying the impacts of faults, analyzing various styles of healing (reactive, preventative, proactive), accounting for partially automated healing and accounting for incomplete/imperfect healing. We posit, however,that it is possible to realize a self-healing benchmark using a collection of analytical techniques and practical tools as building blocks. This paper highlights the flexibility of one analytical tool, the Reliability, Availability and Serviceability (RAS) model, and illustrates its power and relevance to the problem of evaluating self-healing mechanisms/systems, when combined with practical tools for fault-injection
The Role of Reliability, Availability and Serviceability (RAS) Models in the Design and Evaluation of Self-Healing Systems
In an idealized scenario, self-healing systems predict, prevent or diagnose problems and take the appropriate actions to mitigate their impact with minimal human intervention. To determine how close we are to reaching this goal we require analytical techniques and practical approaches that allow us to quantify the effectiveness of a system's remediations mechanisms. In this paper we apply analytical techniques based on Reliability, Availability and Serviceability (RAS) models to evaluate individual remediation mechanisms of select system components and their combined effects on the system. We demonstrate the applicability of RAS-models to the evaluation of self-healing systems by using them to analyze various styles of remediations (reactive, preventative etc.), quantify the impact of imperfect remediations, identify sub-optimal (less effective) remediations and quantify the combined effects of all the activated remediations on the system as a whole
Multi-perspective Evaluation of Self-Healing Systems Using Simple Probabilistic Models
Quantifying the efficacy of self-healing systems is a challenging but important task, which has implications for increasing designer, operator and end-user confidence in these systems. During design system architects benefit from tools and techniques that enhance their understanding of the system, allowing them to reason about the tradeoffs of proposed or existing self-healing mechanisms and the overall effectiveness of the system as a result of different mechanism-compositions. At deployment time, system integrators and operators need to understand how the selfhealing mechanisms work and how their operation impacts the system's reliability, availability and serviceability (RAS) in order to cope with any limitations of these mechanisms when the system is placed into production. In this paper we construct an evaluation framework for selfhealing systems around simple, yet powerful, probabilistic models that capture the behavior of the system's selfhealing mechanisms from multiple perspectives (designer, operator, and end-user). We combine these analytical models with runtime fault-injection to study the operation of VM-Rejuv — a virtual machine based rejuvenation scheme for web-application servers. We use the results from the fault-injection experiments and model-analysis to reason about the efficacy of VM-Rejuv, its limitations and strategies for managing/mitigating these limitations in system deployments. Whereas we use VM-Rejuv as the subject of our evaluation in this paper, our main contribution is a practical evaluation approach that can be generalized to other self-healing systems
Recommended from our members
Multi-perspective Evaluation of Self-Healing Systems Using Simple Probabilistic Models
Quantifying the efficacy of self-healing systems is a challenging but important task, which has implications for increasing designer, operator and end-user confidence in these systems. During design system architects benefit from tools and techniques that enhance their understanding of the system, allowing them to reason about the tradeoffs of proposed or existing self-healing mechanisms and the overall effectiveness of the system as a result of different mechanism-compositions. At deployment time, system integrators and operators need to understand how the selfhealing mechanisms work and how their operation impacts the system's reliability, availability and serviceability (RAS) in order to cope with any limitations of these mechanisms when the system is placed into production. In this paper we construct an evaluation framework for selfhealing systems around simple, yet powerful, probabilistic models that capture the behavior of the system's selfhealing mechanisms from multiple perspectives (designer, operator, and end-user). We combine these analytical models with runtime fault-injection to study the operation of VM-Rejuv — a virtual machine based rejuvenation scheme for web-application servers. We use the results from the fault-injection experiments and model-analysis to reason about the efficacy of VM-Rejuv, its limitations and strategies for managing/mitigating these limitations in system deployments. Whereas we use VM-Rejuv as the subject of our evaluation in this paper, our main contribution is a practical evaluation approach that can be generalized to other self-healing systems
Recommended from our members
Deriving Utility from a Self-Healing Benchmark Report
Autonomic systems, specifically self-healing systems, currently lack an objective and relevant methodology for their evaluation. Due to their focus on problem detection, diagnosis and remediation any evaluation methodology should facilitate an objective evaluation and/or comparison of these activities. Measures of "raw" performance are easily quantified and hence facilitate measurement and comparison on the basis of numbers. However, classifying a system better at problem detection, diagnosis and remediation purely on the basis of performance measures is not useful. The proposed evaluation methodology devised will differ from traditional benchmarks, which are primarily concerned with measures of performance. In order to develop this methodology we rely on a set of experiments which will enable us to compare the self-healing capabilities of one system versus another. As currently we do not have available "real" self-healing systems, we will simulate the behavior of some target self-healing systems, system faults and the operational and repair activities of target systems. Further, we will use the results derived from the simulation experiments to answer questions relevant to the utility of a benchmark report
Biologically Inspired Self-Healing Software System Architecture
Self-healing capabilities have begun to emerge as an interesting and potentially valuable
property of software systems. Self-healing characteristic enables software systems to
continuously and dynamically monitor, diagnose, and adapt itself after a failures has
occur in their components. Adding such characteristic into existing software systems is
immensely useful and valuable for allowing them to recover from failures. However,
developing such self-healing software systems is a significant challenge.
The nature introduces to us unforeseen concepts in terms of presenting biological
systems that have the ability to handle its abnormal conditions. Based on this observation,
this thesis presents self healing architecture for software system based on one of the
biological processes that have the ability to heal by itself (the wound-healing process).
The self-healing architecture provides software systems the ability to handle anomalous
conditions that appear among its components. The presented architecture is divided into
to layers, functional and healing layer. In the functional layer, the components of the
system provide its services without any disruptions. The component is considered as
faulty component if it fails to provide its services. The healing layer aims to heal the
faulty component and return it to the running system without the awareness of the user.
The presented self-healing software system is formally described to prove its
functionality. Set-theoretic and Finite State Machine (FSM) is introduced. A prototype
for the presented architecture has been implemented using Java language. Java objects
are considered as the system components. The modules of the healing layer in the selfhealing
architecture have been implemented into Java classes. An object from the module
class will be created to perform its task for the healing process. The thesis concludes with
recommendations for future works in this area and enhancement of the presented
architecture
Biologically Inspired Self-Healing Software System Architecture
Self-healing capabilities have begun to emerge as an interesting and potentially valuable
property of software systems. Self-healing characteristic enables software systems to
continuously and dynamically monitor, diagnose, and adapt itself after a failures has
occur in their components. Adding such characteristic into existing software systems is
immensely useful and valuable for allowing them to recover from failures. However,
developing such self-healing software systems is a significant challenge.
The nature introduces to us unforeseen concepts in terms of presenting biological
systems that have the ability to handle its abnormal conditions. Based on this observation,
this thesis presents self healing architecture for software system based on one of the
biological processes that have the ability to heal by itself (the wound-healing process).
The self-healing architecture provides software systems the ability to handle anomalous
conditions that appear among its components. The presented architecture is divided into
to layers, functional and healing layer. In the functional layer, the components of the
system provide its services without any disruptions. The component is considered as
faulty component if it fails to provide its services. The healing layer aims to heal the
faulty component and return it to the running system without the awareness of the user.
The presented self-healing software system is formally described to prove its
functionality. Set-theoretic and Finite State Machine (FSM) is introduced. A prototype
for the presented architecture has been implemented using Java language. Java objects
are considered as the system components. The modules of the healing layer in the selfhealing
architecture have been implemented into Java classes. An object from the module
class will be created to perform its task for the healing process. The thesis concludes with
recommendations for future works in this area and enhancement of the presented
architecture
Biologically Inspired Self-Healing Software System Architecture
Self-healing capabilities have begun to emerge as an interesting and potentially valuable
property of software systems. Self-healing characteristic enables software systems to
continuously and dynamically monitor, diagnose, and adapt itself after a failures has
occur in their components. Adding such characteristic into existing software systems is
immensely useful and valuable for allowing them to recover from failures. However,
developing such self-healing software systems is a significant challenge.
The nature introduces to us unforeseen concepts in terms of presenting biological
systems that have the ability to handle its abnormal conditions. Based on this observation,
this thesis presents self-healing architecture for software system based on one of the
biological processes that have the ability to heal by itself (the wound-healing process).
The self-healing architecture provides software systems the ability to handle anomalous
conditions that appear among its components. The presented architecture is divided into
to layers, functional and healing layer. In the functional layer, the components of the
system provide its services without any disruptions. The component is considered as
faulty component if it fails to provide its services. The healing layer aims to heal the
faulty component and return it to the running system without the awareness of the user.
The presented self-healing software system is formally described to prove its
functionality. Set-theoretic and Finite State Machine (FSM) is introduced. A prototype
for the presented architecture has been implemented using Java language. Java objects
are considered as the system components. The modules of the healing layer in the selfhealing
architecture have been implemented into Java classes. An object from the module
class will be created to perform its task for the healing process. The thesis concludes with
recommendations for future works in this area and enhancement of the presented
architecture.
A Weighted Grid for Measuring Program Robustness
Robustness is a key issue for all the programs, especially safety critical ones. In the literature, Program Robustness is defined as “the degree to which a system or component can function correctly in the presence of invalid input or stressful environment” (IEEE 1990). Robustness measurement is the value that reflects the Robustness Degree of the program.
In this thesis, a new Robustness measurement technique; the Robustness Grid, is introduced. The Robustness Grid measures the Robustness Degree for programs, C programs in this instance, using a relative scale. It allows programmers to find the program’s vulnerable points, repair them, and avoid similar mistakes in the future.
The Robustness Grid is a table that contains Language rules, which is classified into categories with respect to the program’s function names, and calculates the robustness degree. The Motor Industry Software Reliability Association (MISRA) C language rules with the Clause Program Slicing technique will be the basis for the robustness measurement mechanism.
In the Robustness Grid, for every MISRA rule, a score will be given to a function every time it satisfies or violates a rule. Furthermore, Clause program slicing will be used to weight every MISRA rule to illustrate its importance in the program. The Robustness Grid shows how much each part of the program is robust and effective, and assists developers to measure and evaluate the robustness degree for each part of a program.
Overall, the Robustness Grid is a new technique that measures the robustness of C programs using MISRA C rules and Clause program slicing. The Robustness Grid shows the program robustness degree and the importance of each part of the program. An evaluation of the Robustness Grid is performed to show that it offers new measurements that were not provided before