Master's thesis (2015)
Open Access document in PolyPublie |
|
Open Access to the full text of this document Terms of Use: All rights reserved Download (2MB) |
Abstract
Real-time systems are characterized by their timing constraints. It means that the real time tasks must respect deadlines to avoid unwanted consequences. When only a few deadlines are missed, it can be hard to identify the underlying cause, due to the numerous components involved in the systems and their interactions. It often requires specialized tools. However, those tools must not disturb the system or slow down the tasks. In that situation, tracing can be useful or even essential. It consists in collecting selected events during the execution of a program, and the time at which they occurred. It is then possible to analyse the interesting parts of the resulting trace. However, the trace can be very large and the challenge is to retrieve relevant data in order to find quickly complex or erratic real-time problems. This motivates the goal of this work to develop a real time systems specialized tool to help developers. We propose a new approach to efficiently find real-time problems based on the fact that the real time tasks are repetitive. We first provide a way for the users to define when those tasks are executing in term of tracing events. Then, the idea is to execute different analyses on the corresponding trace segments instead of the whole trace. This allows us to save huge amount of time and execute more complex analyses. To define the execution model of a task, we conceive a graphical interface to let the users specify the trace events that must be include in an execution. Because some users may not know the events involved in their systems, we first proposed them predefined model of interest. We also provided some suggestions based on a pattern matching algorithm. The users can then load one of the model and edit it if necessary. This algorithm is based on an known algorithm that we adapt to make it efficient with traces. Once the model is defined, we search in the trace all the sequences that match the model using state machines. This allow us to read the trace only once. Then, we show the resulting executions in a comparison view, to highlight those that are problematic. Once we have selected executions that present irregularities, we execute different analyses on the corresponding trace segments. To make our analysis, we search for the common real-time problems and the relevant metrics. Our main contribution is an analysis that combine the search of the dependencies of a task with the scheduling information to detect scheduling problems. The efficiency of the proposed method has finally been tested with multiple traces. We also successfully use our solution to identify the cause of problems in industrial applications.
Résumé
Les systèmes temps réel ont la particularité de devoir respecter des contraintes de temps. Ils sont donc difficiles à observer correctement puisqu'il faut éviter de venir perturber leur exécution. Dans cette situation, le traçage peut s'avérer essentiel. Cela consiste à collecter de l'information lors de l'exécution d'un système avec un impact minimal. Puisque les traces produites contiennent beaucoup de données, il est ensuite nécessaire d'extraire l'information pertinente à l'aide d'outils appropriés. Dans cette optique, l'objectif du présent travail consiste à améliorer la détection de problèmes dans les systèmes temps réel en développant un outil d'analyse de traces spécialisé pour ces systèmes. La nouvelle approche proposée consiste à permettre aux développeurs de définir le modèle de la tâche temps réel qu'ils souhaitent analyser. Puisque les tâches temps réel se produisent de manière répétitive, l'idée est de récupérer les segments de traces correspondants aux différentes exécutions de la tâche. Il est ensuite possible de comparer ces exécutions entre elles et d'analyser plus en profondeur celles qui semblent problématiques. Pour définir le modèle d'une tâche temps réel, nous avons conçu une interface graphique permettant de spécifier les événements de la trace définissant une exécution. Comme cela peut s'avérer complexe, nous fournissons également des suggestions pertinentes. Pour ce faire, nous avons d'abord comparé différents algorithmes de reconnaissance de patrons. Puis, nous avons adapté celui qui semblait le plus prometteur pour qu'il fonctionne efficacement avec des traces d'exécution. Nous pouvons ainsi présenter les groupes d'événements qui semblent faire partie de tâches récurrentes. L'utilisateur peut ensuite choisir un des groupes pour qu'il forme la base du modèle d'exécution et l'éditer si nécessaire. Une fois le modèle défini, nous cherchons dans la trace toutes les correspondances. Nous utilisons à cet effet des machines à état permettant de repérer les occurrences en effectuant une seule lecture des événements. Nous avons ensuite observé le fonctionnement des différents outils de visualisation de traces afin de sélectionner les meilleures représentations et de les améliorer en fonction de notre cas. Nous avons donc conçu un ensemble de vues permettant d'afficher les exécutions et de les comparer entre elles. Ensuite, nous avons répertorié les principaux problèmes dans les systèmes temps réel. Nous avons également cherché des métriques pertinentes à collecter afin de repérer la présence de ces problèmes dans une exécution. En présentant des analyses spécifiques à certains problèmes et de l'information utile, nous sommes en mesure d'aider les développeurs à trouver pourquoi certaines exécutions présentent des anomalies. Ainsi, notre contribution principale consiste à détecter les inversions de priorité en combinant l'analyse du chemin critique d'une tâche avec les informations d'ordonnancement. Nous avons finalement validé notre approche à partir de résultats expérimentaux. Nous avons ainsi pu détecter la source de latences inexpliquées dans des applications industrielles de manière très efficace.
Department: | Department of Computer Engineering and Software Engineering |
---|---|
Program: | Génie informatique |
Academic/Research Directors: | Michel Dagenais |
PolyPublie URL: | https://publications.polymtl.ca/1917/ |
Institution: | École Polytechnique de Montréal |
Date Deposited: | 15 Dec 2015 16:28 |
Last Modified: | 26 Sep 2024 17:28 |
Cite in APA 7: | Côté, M. (2015). Détection de problèmes dans les systèmes temps réel par l'analyse de traces [Master's thesis, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/1917/ |
---|---|
Statistics
Total downloads
Downloads per month in the last year
Origin of downloads