
Performance Problem Diagnostics by Systematic Experimentation Zur Erlangung des akademischen Grades eines Doktors der Ingenieurwissenschaften von der Fakultät für Informatik des Karlsruher Instituts für Technologie (KIT) genehmigte Dissertation von Alexander Wert aus Kopejsk, Russland Tag der mündlichen Prüfung: 15.07.2015 Erstgutachter: Prof. Dr. Ralf Reussner Zweitgutachter: Prof. Dr. Wilhelm Hasselbring Abstract The performance of enterprise software systems has a direct impact on the success of business. Recent studies have shown that software performance affects customer satisfaction as well as operational costs of software. Hence, software performance constitutes an essential competitive and differentiating factor for software vendors and operators. In industrial practice, it is still a challenging task to detect software performance problems before they are faced by end users. Diagnostics of performance problems requires deep expertise in performance engineering and still entails a high manual effort. As a consequence, performance evaluations are postponed to the last minute of the development process, or even are completely omitted. Instead of proactively avoiding performance problems, problems are fixed in a reactive manner when they first emerge in operations. Since reactive, operation-time resolution of performance problems is very expensive and has a negative impact on the reputation of software vendors, performance problems need to be diagnosed and resolved in the process of software development. Existing approaches addressing performance problem diagnostics either assume the existence of a performance model, are limited to problem detection without analyzing root causes, or are applied as reactive approaches during the operations phase and, thus, cannot be effective applied during development for performance problem diagnostics. In this thesis, we introduce an automatic, experiment-based approach for performance problem diagnostics in enterprise software systems. We describe a method to derive a taxonomy on recurrent types of performance problems and introduce a systematic experimentation concept. Using the taxonomy as a search tree, the proposed approach systematically searches for root causes of detected performance problems by executing series of systematic performance experiments. Based on the measurement data from experiments, detection heuristics decide on the presence of performance problems in the target system. Furthermore, we develop a domain-specific description language to specify the information required for automatic performance problem diagnostics. Finally, we create and evaluate a representative set of detection heuristics. We validate our approach by means of five studies including end-to-end case studies, a controlled experiment and an empirical study. The results of the validation show that our approach is applicable to a wide range of contexts and is able to fully automatically and accurately detect performance problems in medium-size and large-scale applications. External users of the provided approach evaluated it as a useful support for diagnostics of performance problems and exposed their willingness to use the approach for their own software development projects. Explicitly designed for automatic, development-time testing, our approach can be incorporated into continuous integration. In this way, our approach allows regular, automatic diagnostics of performance problems involving minimal manual effort. Furthermore, by encapsulating and automating expert knowledge on performance engineering, our approach enables developers who are non-performance experts to conduct performance problem diagnostics. iii Kurzfassung In heutigen Unternehmen nehmen betriebliche Informationssysteme eine zentrale Rolle ein. Sie eröffnen neue Vertriebskanäle, ermöglichen effizientere Betriebsprozesse und tragen maßgeblich zur Nutzung von Skaleneffekten bei. Dienstgüteeigenschaften betrieblicher Informationssysteme haben einen direkten Einfluss auf den Geschäftserfolg der Unternehmen. Studien haben gezeigt, dass die Performance solcher Systeme sich maßgeblich auf deren Betriebskosten sowie die Kun- denzufriedenheit auswirkt. Somit ist die Performance betrieblicher Software ein entscheidender Wettbewerbsfaktor und ein Differenzierungsmerkmal für Software-Anbieter und Software-Betreiber. Performance-Probleme, die bis zum Betrieb der Software unerkannt bleiben, stellen nicht nur ein finanzielles Risiko dar, sondern können auch einen Schaden in der Reputation verursachen. In der industriellen Praxis der Software-Entwicklung ist das frühzeitige Erkennen und die Dia- gnose von Performance-Problemen immer noch eine große Herausforderung. Die Diagnose von Performance-Problemen erfordert nicht nur ein tiefgründiges Expertenwissen in der Disziplin des Performance Engineering, sondern bringt einen großen manuellen Aufwand mit sich. Dies hat zur Folge, dass Performance-Analysen bis in die späten Phasen der Software-Entwicklung aufgescho- ben oder gänzlich ausgelassen werden. Performance-Probleme werden meist reaktiv angegangen, wenn sie zum ersten Mal im Betrieb der Software auftauchen, anstatt sie proaktiv während der Software-Entwicklung zu erkennen und zu lösen. Da das reaktive Lösen von Performance-Problemen vergleichsweise sehr aufwändig ist, müssen Performance-Probleme noch während des Software- Entwicklungsprozesses diagnostiziert werden. Existierende Ansätze zur Erkennung von Performance-Problemen nehmen entweder die Verfügbar- keit eines Systemmodells an, sind auf das Erkennen von Problemen beschränkt, ohne eine Diagnose der Ursachen durchzuführen, oder sind für den reaktiven Einsatz während des Software-Betriebs ausgelegt. Somit bieten existierende Ansätze nicht die notwendigen Mittel, um eine proaktive Er- kennung und Diagnose von Performance-Problemen effektiv während der Software-Entwicklung durchzuführen. In der vorliegenden Arbeit wird ein Ansatz zur automatischen, experimentbasierten Diagnose von Performance-Problemen in betrieblichen Software-Systemen vorgestellt. Basierend auf einer Taxono- mie von wiederkehrenden Performance-Problemtypen führt der vorgestellte Ansatz eine Erkennung von Performance-Problemen durch sowie eine systematische Suche nach deren Ursachen. Dabei wird eine Reihe zielgerichteter Performance-Experimente durchgeführt. Die dabei gesammelten Messdaten werden mit Hilfe einer Menge an Regeln und Algorithmen analysiert, um Aussagen über die Existenz entsprechender Performance-Problemtypen in dem Zielsystem zu treffen. Die vorliegende Arbeit umfasst die folgenden wissenschaftlichen Beiträge: v Taxonomie der Performance-Problemtypen Die vorliegende Arbeit führt eine Methode zur expliziten Erfassung von strukturiertem Wissen über Performance-Probleme ein. Dazu wird ein Klas- sifikationsschema für bestehende, wiederkehrende Typen von Performance-Problemen eingeführt. Die Klassifikation erfasst zum einen verschiedene Charakteristiken von Performance-Problemen sowie die Beziehungen zwischen unterschiedlichen Performance-Problemtypen. Auf Basis der Klassifikation wird eine Taxonomie der wiederkehrenden Performance-Problemtypen abgeleitet. Die statische Taxonomie wird schließlich um die dynamische Information zur experimentbasierten Diagnose von Performance-Problemen erweitert. Im Rahmen der vorliegenden Arbeit wurde die eingeführte Methode auf 27 Performance-Problembeschreibungen angewendet. Das Ergebnis ist ein Evaluationsplan für Performance-Probleme, der zur Koordination der automatischen Performance- Problemdiagnose eingesetzt werden kann und darüber hinaus eine Unterstützung bei der manuellen Diagnose bietet. Systematisches Experimentier- und Diagnosekonzept Messbasierte Performance-Ana- lyseverfahren haben das inhärente Problem, dass Messdaten auf Grund des Mehraufwands der Messung nicht gleichzeitig genau, umfassend und mit hohem Detailgrad erfasst werden können. Die vorliegende Arbeit beschreibt unter anderem ein systematisches, selektives Experimentierkonzept, dass es erlaubt durch eine systematische Ausführung von Experimenten sowohl genaue als auch detaillierte Messdaten zu erfassen. Dabei wird für jedes einzelne Experiment eine zielgerichtete, selektive Instrumentierung der Zielanwendung durchgeführt, sodass der durch Messung verursachte Mehraufwand in jedem Experiment gering gehalten wird. Die Instrumentierungsanweisungen werden zwischen einzelnen Experimenten dynamisch verändert und erlauben so, detaillierte Daten bei hoher Genauigkeit zu erfassen. Zur automatischen Diagnose von Performance-Problemen wird das systema- tische Experimentierkonzept mit der beschriebenen Taxonomie kombiniert, um eine systematische Suche nach Ursachen von Performance-Problem zu ermöglichen. Die Taxonomie wird dabei als ein Suchbaum verwendet, während für jeden Knoten in der Taxonomie ein zugeschnittenes Experiment mit selektiver Instrumentierung durchgeführt wird. In der vorliegenden Arbeit werden die Vorteile und die Einschränkungen des systematischen Experimentierkonzepts für die automatische Diagnose von Performance-Problemen untersucht. Des Weiteren wird die Anwendbarkeit des vorgestellten Experimentierkonzepts über die Performance-Problemdiagnose hinaus untersucht. Beschreibungssprache für Performance-Problemdiagnose Um eine system- und techno- logieunabhängige und dennoch automatische Diagnose von Performance-Problemen zu ermöglichen, wird in dieser Arbeit ein Metamodell eingeführt, welches eine Sprache zur Beschreibung von Szenarien der Performance-Problemdiagnose definiert. Die Sprache umfasst vier Subsprachen.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages329 Page
-
File Size-