Mémoire de maîtrise (2014)
Document en libre accès dans PolyPublie |
|
Libre accès au plein texte de ce document Conditions d'utilisation: Tous droits réservés Télécharger (2MB) |
Résumé
Le traçage est une technique qui permet de récupérer de l'information très précise sur l'exécution d'un système avec un impact minime. Afin de mieux comprendre l'exécution d'une application, la technique habituelle consiste à y attacher un débogueur et interrompre l'application, afin d'inspecter la valeurs de certaines variables, par exemple. Cette approche est mal adaptée aux applications qui ont des interactions fréquentes avec le système lui-même ou avec d'autres applications. Les applications temps réel sont un type d'application qui possède ce genre d'interactions. L'aspect temporel de leur exécution rend l'utilisation d'un débogueur inutile dans plusieurs cas. L'impact minimal du traçage sur l'exécution d'une application lui confère un atout important pour mieux comprendre les interactions complexes qui peuvent agir au sein d'un système temps réel. Afin de minimiser l'impact de l'instrumentation, il est souhaitable de réduire la quantité d'information récupérée. Il est donc important de bien identifier l'information minimale nécessaire à l'analyse, qui ne causera pas de latences indues. Dans un même ordre d'idées, le traceur ne peut pas se permettre d'effectuer un traitement coûteux avant l'enregistrement des informations. Les événements récupérés devront donc contenir une information brute sur l'exécution du système. L'objectif de cette recherche est de montrer que l'information récupérée lors du traçage d'un système temps réel peut être utilisée pour extraire de l'information permettant de mieux comprendre des comportements propres aux systèmes temps réel. L'hypothèse de ce travail est que le traçage permet de récupérer de l'information sur l'exécution d'une application temps réel et que les informations de traçage ainsi récupérées peuvent être utilisées pour diagnostiquer des problèmes difficilement observables. Nous étudions d'abord les différents outils de traçage en fonction de leurs fonctionalités et de leur impact sur les systèmes temps réel. Ensuite, nous comparons les différents outils d'analyse de trace selon deux grandes catégories: les approches algorithmiques et les techniques de visualisation. Des problèmes typiques des applications temps réel sont initialement identifés et serviront de base pour guider notre recherche. Un algorithme est développé afin d'analyser la trace et retrouver ces problèmes typiques. L'algorithme est testé sur des traces générées à partir de cas de tests et sa performance sera évaluée. La première contribution de ce travail consiste en la mise au point d'un algorithme permettant de générer un modèle à haut niveau d'une application temps réel à partir de la trace de son interaction avec le noyau du système d'exploitation. Ce modèle utilise la sémantique particulière des événements afin de produire une machine à états simple et rapide. Les événements nécessaires et minimaux à l'analyse sont identifiés de façon à limiter l'impact du traçage sur l'application. La deuxième contribution consiste en l'élaboration d'un outil de visualisation permettant de comparer directement les différentes phases d'exécution d'une application temps réel. Cet outil utilise le modèle généré à partir des informations de traçage afin d'identifier les différentes phases et d'extraire plusieurs statistiques utiles à la compréhension globale de l'exécution. Finalement, une structure de stockage des statistiques est améliorée de façon à récupérer efficacement des statistiques qui évoluent de façon continue dans le temps. Le résultat final est un outil qui permet de diagnostiquer les problèmes des applications temps réel grâce aux informations contenues dans une trace noyau, en plus de faciliter la découverte de patrons d'intérêt.
Abstract
Tracing is a technique to gather precise information about the execution of a system with minimal impact. In order to better understand the execution of an application, the usual technique consists in attaching a debugger and interrupting the application, to inspect the value of certain variables, for example. This approach is ill-suited for applications that are tightly coupled with the system itself. Real-time applications are a type of applications that exhibit this sort of interactions. The temporal aspect of their execution nullifies the use of a debugger. The low impact of a tracer on the execution of an application is therefore an important aspect providing better understanding of complex interactions in real-time systems. Even then, it is important to minimize even further the impact of tracing by reducing the amount of gathered information. It is therefore important to identify the minimal information that is necessary for the analysis that will not cause undue latency. Similarly, the tracer cannot afford complex processing while collecting the information. It must write the raw events as fast as possible. The objective of this research is to show that the information gathered during the tracing of a real-time system can be used to extract additional information that can be used to better understand the behaviour of real-time systems. We will first study the different tracing tools according to their functionalities and impact on real-time systems. Then, we will compare different trace analysis tools according to two main categories : algorithmic approaches and visualization techniques. Typical real-time application problems will be identified and used as a baseline to guide our research. An algorithm will then be developed to analyse the trace and find these typical problems. The algorithm will be tested on traces generated from test cases and its performance evaluated. The hypothesis of this work is that tracing allows gathering information about the execution of real-time applications and that this tracing information can be used to diagnose problems that are otherwise difficult to observe. The result of this work is the creation of a model allowing the extraction of statistics and the generation of visualizations from kernel traces gathered on a real-time system. This model uses event semantics to produce a finite-state machine that is both simple and fast. The minimal and necessary events for the analysis are identified in order to limit the impact of tracing on the application. Finally, a statistics storage structure is improved in order to retrieve efficiently statistics that are continuously variable through time. The final result is a tool to diagnose real-time application problems using the information stored inside a kernel trace and aid in the discovery of interesting patterns.
Département: | Département de génie informatique et génie logiciel |
---|---|
Programme: | Génie informatique |
Directeurs ou directrices: | Michel Dagenais |
URL de PolyPublie: | https://publications.polymtl.ca/1388/ |
Université/École: | École Polytechnique de Montréal |
Date du dépôt: | 23 juil. 2014 16:23 |
Dernière modification: | 02 oct. 2024 23:21 |
Citer en APA 7: | Rajotte, F. (2014). Analyse de systèmes temps-réel par traçage [Mémoire de maîtrise, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/1388/ |
---|---|
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements