An Infrastructure for the generic and optimized analysis of execution traces of embedded systems
Infrastructure pour la gestion générique et optimisée des traces d'exécution pour les systèmes embarqués.
Résumé
Validation is a critical aspect of system development. This is especially true in the context of embedded systems which come with various technical and physical constraints. As embedded systems have enormously grown in complexity in recent years, formal method validation is too complex or too costly to apply. Validation must therefore use post-conception methods, the major method being trace analysis. Indeed, execution traces capture many details about systems' execution and provide a means for advanced system analysis. However, trace analysis faces two major challenges. On one hand, trace analysis has to deal and support huge execution traces. On the other hand, analysis methods should be able to retrieve relevant metrics from the low-level information traces contain.
This thesis has been done as part of the SoC-TRACE projet and presents three contributions. Our first contribution is a definition of a generic execution trace format that expresses semantics. Our second contribution is a workflow-based infrastructure for generic and automatic trace analysis. This infrastructure addresses the problem of huge traces management using streaming mechanisms. It allows modular and configurable analyses, as well as automatic analyses execution. Our third contribution concerns generic performance analysis for Linux systems. This contribution defines the means for trace recording, as well as an analysis workflow producing unified performance profiles.
We validate our contributions with use cases given by STMicroelectronics and traces obtained from benchmark executions. Our trace format with semantics allowed us to automatically bring out execution problems. Using streaming mechanisms, we have been able to analyze traces that can reach several hundreds of gigabytes. Our generic analysis method for systems let us to automatically highlight, without any prior knowledge, internal behavior of benchmark programs. Our generic solutions point out a similar execution behavior of benchmarks on different machines and architectures, and showed their impact on the execution.
La validation des systèmes est un des aspects critiques dans les phases de développement. Cette validation est d'autant plus importante pour les systèmes embarqués, dont le fonctionnement doit être autonome, mais aussi contraint par des limitations physiques et techniques. Avec la complexification des systèmes embarqués ces dernières années, l'application de méthodes de validation durant le développement devient trop coûteux, et la mise en place de mécanismes de vérification post-conception est nécessaire. L'utilisation de traces d'exécution, permettant de capturer le comportement du système lors de son exécution, se révèle efficace pour la compréhension et la validation des systèmes observés. Cependant, les outils d'exploitation de traces actuels se confrontent à deux défis majeurs, à savoir, la gestion de traces pouvant atteindre des tailles considérables, et l'extraction de mesures pertinentes à partir des informations bas-niveau contenues dans ces traces.
Dans cette thèse, faite dans le cadre du projet FUI SoC-TRACE, nous présentons trois contributions. La première concerne la définition d'un format générique pour la représentation des traces d'exécution, enrichi en sémantique. La seconde concerne une infrastructure d'analyse utilisant des mécanismes de workflow permettant l'analyse générique et automatique de traces d'exécution. Cette infrastructure répond au problème de gestion des traces de tailles considérables \textit{via} des mécanismes de streaming, permet la création d'analyses modulaires, ainsi qu'un enchaînement automatique des traitements. Notre troisième contribution propose une méthode générique pour l'analyse de performances de systèmes Linux.
Cette contribution propose à la fois la méthode et les outils de collecte de traces, mais aussi le workflow permettant d'obtenir des profils unifiés pour les traces capturées.
La validation de nos propositions ont été faites d'une part sur des traces issues de cas d'usages proposés par STMicroelectronics, partenaire du projet, et d'autre part sur des traces issues de programmes de benchmarks. L'utilisation d'un format enrichi en sémantique a permis de mettre en évidence des anomalies d'exécutions, et ce de manière semi-automatique. L'utilisation de mécanismes de streaming au sein de notre infrastructure nous a permis de traiter des traces de plusieurs centaines de giga-octets. Enfin, notre méthode d'analyse générique nous a permis mettre en évidence, de manière automatique et sans connaissances \textit{a priori} des programmes, le fonctionnement interne de ces différents benchmarks. La généricité de nos solutions a permis d'observer le comportement de programmes similaires sur des plates-formes et des architectures différentes, et d'en montrer leur impact sur les exécutions.