Des états Pourquoi toute cette excitation autour des états ? Le traceur nous donne des évènements ponctuels Un état décrit comment se trouve le système pendant un intervalle de temps
Un exemple Les statistiques TempsÉvènement 10 open("fichier1.txt") = 3 (descripteur de fichier) 20 read(fd = 3,...) 30 close(fd = 3) 40 open("fichier2.txt") = 3 (descripteur de fichier) 50 read(fd = 3,...) 60 close(fd = 3)
Un autre exemple Le control flow view de LTTV Indique pour chaque instant que fait le processus: – Exécution, bloqué, en appel système, etc. Temps Processus 0 Processus 1 Processus 2 Processus 3
Pourquoi un nouveau système détat ? LTTV en possède déjà un… Plus générique – Celui de LTTV est fait sur mesure pour les évènements noyaux de LTTng 0.x. Pour quil puisse être utilisé dans dautres applications.
Un système détat tout neuf Merci, Alexandre Répertoire clés / valeurs – Clés : « attributs » – Valeurs : « états » Clés organisées comme un système de fichier – Chaque nœud (interne ou feuille) possède une valeur On peut lire et écrire les valeurs détats pendant la lecture de la trace.
Gestionnaire dévènements Lutilisateur doit programmer un peu de colle. Prendre les évènements et générer les changements détats correspondants. Système détatsGestionnaire dévènements fork() Ajouter entrée Nouveau processus
QuarkÉtat Quack ? Quark ! processus (nulle) 32 (nulle) 45 (nulle) parent 17 parent 32 exec_name "grep" exec_name "bash" … … Légende Attribut Quark Valeur
Lien avec lhistorique Le système peut enregistrer toutes les modifications des valeurs détats Utilisation optionnelle de la librairie dintervalles Méthodes pour accéder aux valeurs détats passées
Difficultés Définition dun API assez léger Gestion de la mémoire – shared_ptr Abstraction du lien avec la librairie dhistorique, ne pas avoir de dépendance