• Aucun résultat trouvé

CHAPITRE 2 REVUE CRITIQUE DE LA LITTÉRATURE

2.3 Le traçage

2.3.4 Visualisation de traces

Les traces générées au format CTF sont binaires, et ne sont donc pas lisibles directement par les humains. Ainsi, plusieurs outils de visualisation et d’analyse de trace ont été proposés, certains permettant de mettre rapidement en lumière le comportement du système surveillé, et d’autres offrant à l’utilisateur de nombreux outils de visualisation. Nous détaillerons dans la suite de cette section les outils permettant la visualisation de traces au format CTF, le format que nous avons utilisé lors de nos travaux.

Babeltrace

Le traceur LTTng a instauré un standard de stockage de trace binaire optimisé, appelé CTF, qui n’est pas lisible directement par les humains. Pour pallier à ce problème, Efficios, l’en- treprise en charge du développement de LTTng, a mis en ligne le code source de Babeltrace, un outil capable d’afficher des traces CTF sous forme d’évènements textuels ordonnés. Les évènements affichés par Babeltrace sont estampillés précisément et comportent le nom de l’évènement ainsi que les arguments enregistrés au moment où le point de trace a été rencon- tré à l’exécution du système. Son interface textuelle est présentée dans la figure 2.4.

Babeltrace peut également convertir des traces au format CTF vers un autre format de trace et inversement, ce qui en fait un outil très utilisé dans le monde du traçage.

Cet outil fournit également une interface de programmation, accessible en C ou en Python, qui permet la lecture et l’écriture de traces au format CTF. Cela permet de filtrer les traces enregistrées, précisément selon les souhaits du programmeur, de supprimer certains évène- ments et même d’en fusionner.

De plus, ces interfaces de programmation permettent de convertir des données binaires en structures de données qui peuvent ensuite être modifiées pour être utilisées par d’autres algorithmes. Par exemple, avec l’interface Python, les évènements peuvent être lus de la trace et convertis en objets dictionnaire, qui après différentes étapes de modification, peuvent servir à alimenter des algorithmes d’apprentissage machine.

Cependant, la nouvelle version de Babeltrace est encore en cours de développement, et la lec- ture des traces au format CTF, bien qu’efficace, s’avère relativement lente lorsque le nombre

Figure 2.4 Visualisation de trace à l’aide de Babeltrace

d’évènements est très grand. De plus, la documentation de l’interface Python est encore en cours de rédaction, et aucune indication n’est pour l’instant fournie sur la manière de traiter des traces dans le mode live tracing de LTTng.

LTTng analyses

Le traceur LTTng offre certains outils pour analyser les traces recueillies. Ces outils s’appuient sur babeltrace pour lire les traces CTF et, bien que ce ne soient pas exactement des outils de visualisation, ils permettent d’afficher des informations utiles à l’utilisateur sur le système tracé. Ainsi, Desfossez a proposé un script permettant d’afficher les latences lors d’un transfert entrée/sortie et un autre permettant d’afficher des statistiques précises sur les appels système enregistrés par le traceur (Desfossez, 2018). Les deux résultats de ces outils sont présentés respectivement à la figure 2.5 et à la figure 2.6.

Figure 2.5 Analyse LTTng sur la latence des entrées/sorties

Puisque ces codes sources sont ouverts, il est facile de développer de nouvelles analyses. Cependant, la visualisation des informations est faite dans un terminal, ce qui peut empêcher l’adoption d’un tel outil par une large communauté d’utilisateurs. De plus, même si les analyses sont puissantes, elles requièrent une bonne connaissance du traçage avec LTTng et du format CTF pour être développées.

Figure 2.6 Analyse LTTng sur les statistiques d’utilisation des appels systèmes

Trace Compass

Trace Compass est quant à lui un puissant outil de visualisation et d’analyse de trace. Il est capable de travailler rapidement sur de grosses traces et se base sur des machines à états finis pour présenter différents résultats. Il a été développé en Java sous Eclipse, et supporte différents types de formats de trace, dont le format CTF.

L’avantage de Trace Compass est de proposer des vues claires et colorées à partir de traces enregistrées, et la conversion des traces au format CTF vers un format lisible par les humains se fait entièrement dans cet outil à l’aide de machines à états.

Les machines à états utilisés sont très efficaces pour sauvegarder des grands nombres d’évène- ments enregistrés (Montplaisir-Gonçalves et al., 2013), et la construction de l’arbre des états est particulièrement optimisée. Ainsi, lorsqu’une trace est chargée dans le logiciel, l’arbre d’état est calculé selon l’intervalle visible dans la vue courante, ce qui permet à cet outil d’af- ficher rapidement des traces, et aux utilisateurs de pouvoir explorer efficacement les différents évènements enregistrés.

En outre, diverses vues ont été développées pour analyser le système ayant été tracé, comme la Control Flow View qui permet de suivre les opérations effectuées par chacun des fils d’exécution des différents processus tracés, d’afficher des statistiques sur l’utilisation des

ressources du système ou encore l’affichage de statistiques relatives au système durant la période où il a été tracé. Les figures 2.7, 2.8 et 2.9 montrent les différentes vues énumérées. De plus, il est très facile de développer de nouvelles analyses et de nouvelles vues à l’aide de fichier XML, et des travaux portant sur les machines virtuelles (Nemati et al., 2017) ou des vues spécifiques à des conteneurs ont été implémentés. Pour obtenir des vues encore plus riches, il est possible d’ajouter du code Java au projet. De plus, il est possible d’attacher des scripts écrits en Python afin de traiter les traces visualisées sans avoir à modifier le code source de l’outil.

Figure 2.7 Control Flow View de Trace Compass

Trace Compass est ainsi devenu un outil incontournable pour visualiser les traces enregistrées et pour mener des analyses rapides et puissantes. Cependant, le logiciel peut être compliqué à prendre en main pour des développeurs, puisqu’il repose sur Eclipse, mais des travaux visant à détacher le projet de cette plateforme sont en cours.

Documents relatifs