Improving Software Performance and Reliability with an Architecture-Based Self-Adaptive Framework

Modern computer systems for distributed service computing become highly complex and difficult to manage. A selfadaptive approach that integrates monitoring, analyzing, and actuation functionalities has the potential to accommodate to a dynamically changing environment. The main objective of this paper is to develop an architecture-based self-adaptive framework to improve performance and resource efficiency of a server while maintaining reliable services. The target problem is distributed and concurrent systems. This paper proposes a Self-Adaptive Framework for Concurrency Architecture (SAFCA) that includes multiple concurrency architectural patterns or alternatives. The framework has monitoring and managing capabilities that can invoke another architectural alternative at run-time to cope with increasing demands or for reliability purpose. Two control mechanisms have been developed: SAFCA-Q and SAFCA-R. With SAFCA-Q, the system does not need to be statically configured for the highest workloads; hence, resource usage becomes more efficient in normal conditions and the system still is able to handle busty demands. SAFCA-R is used to improve reliability in the case of a failure by conducting a switchover to another software architecture. Experiment results demonstrate that the performance of SAFCA-Q is better than systems using only standalone concurrency architecture and resources are also better utilized. SAFCA-R also shows fast recovery in the face of a failure.

[1]  Noel De Palma,et al.  Component-Based Autonomic Management for Legacy Software , 2009, Autonomic Computing and Networking.

[2]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[3]  George Candea,et al.  Microreboot - A Technique for Cheap Recovery , 2004, OSDI.

[4]  Richard Murch,et al.  Autonomic Computing , 2004 .

[5]  Rogério de Lemos,et al.  Software Engineering for Self-Adaptive Systems [outcome of a Dagstuhl Seminar] , 2009, Software Engineering for Self-Adaptive Systems.

[6]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[7]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture , 1996 .

[8]  Douglas C. Schmidt,et al.  Patterns for concurrent and networked objects , 2000 .

[9]  Muli Ben-Yehuda,et al.  NAP: a building block for remediating performance bottlenecks via black box network analysis , 2009, ICAC '09.

[10]  Thomas Engel,et al.  Threat-model-driven runtime adaptation and evaluation of intrusion detection system , 2009, ICAC '09.

[11]  Jeff Magee,et al.  Self-Managed Systems: an Architectural Challenge , 2007, Future of Software Engineering (FOSE '07).

[12]  Bradley R. Schmerl,et al.  Improving Architecture-Based Self-Adaptation through Resource Prediction , 2009, Software Engineering for Self-Adaptive Systems.

[13]  Mary Shaw,et al.  Engineering Self-Adaptive Systems through Feedback Loops , 2009, Software Engineering for Self-Adaptive Systems.

[14]  David E. Culler,et al.  USENIX Association Proceedings of USITS ’ 03 : 4 th USENIX Symposium on Internet Technologies and Systems , 2003 .

[15]  Douglas C. Schmidt,et al.  Creating self-healing service compositions with feature models and microrebooting , 2009, Int. J. Bus. Process. Integr. Manag..

[16]  Qi Zhang,et al.  Autocorrelation-driven load control in distributed systems , 2009, 2009 IEEE International Symposium on Modeling, Analysis & Simulation of Computer and Telecommunication Systems.

[17]  Xu Zhang,et al.  Towards Architecture-based Autonomic Software Performance Engineering , 2010, CAL.

[18]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.