Vous êtes sur la page 1sur 50

ECOLE POLYTECHNIQUE

DE MONTR

EAL
D

EPARTEMENT DE G

ENIE INFORMATIQUE
Projet de Fin d etudes
Rapport nal
Rapport de projet de n d etudes soumis
comme condition partielle ` a lobtention du
dipl ome de baccalaur eat en ing enierie.
Pr esent e par: SIMON BOUVIER-ZAPPA
Matricule: 1161843
Directeur de projet: PROFESSEUR MICHEL DAGENAIS
Entreprise: G enie informatique, Ecole Polytechnique de Montr eal
Date: 17 avril 2005
R esum e
Ce pr esent rapport fait etat du travail effectu e sur le module de ltrage du Linux Trace
Toolkit Viewer ( Lttv ). Ces r ealisations ont eut lieu durant la session dhiver 2005
comme projet de n d etudes au baccalaur eat en g enie informatique ` a l

Ecole Poly-
technique de Montr eal.
Table des mati` eres
1 Introduction 1
2 Probl ematique 3
2.1 Mise en contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Travaux ant erieurs . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Travail ` a accomplir . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Int er ets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Difcult es escompt ees . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.1 S eparation du probl` eme . . . . . . . . . . . . . . . . . . . . 5
2.4.2 D enition de lexpression de ltrage . . . . . . . . . . . . . . 6
2.4.3 Larbre de recherche . . . . . . . . . . . . . . . . . . . . . . 7
3 M ethodologie 8
3.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1 Requis de lapplication . . . . . . . . . . . . . . . . . . . . . 8
3.1.2 Langage dimplantation . . . . . . . . . . . . . . . . . . . . 9
3.1.3 Analyse g en erale du probl` eme . . . . . . . . . . . . . . . . . 9
3.1.4 Analyse de lexpression de ltrage . . . . . . . . . . . . . . . 11
3.1.5 Analyse de la structure de larbre . . . . . . . . . . . . . . . 13
i
TABLE DES MATI
`
ERES ii
3.2 Conception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1

Etapes de conception . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.3.1 Pr ecompilation du ltre . . . . . . . . . . . . . . . . . . . . 23
3.3.2 Parcours du ltre . . . . . . . . . . . . . . . . . . . . . . . . 24
4 R esultats 27
4.1 Entr ees du programme . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1 Utilisation du module ltre textuel . . . . . . . . . . . . . . . 27
4.1.2 Utilisation du module ltre graphique . . . . . . . . . . . . . 28
4.2 Sortie du programme . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 Discussion 33
5.1 Port ee du travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Analyse des m ethodes exploit ees . . . . . . . . . . . . . . . . . . . . 33
5.2.1 Analyse de la performance . . . . . . . . . . . . . . . . . . . 33
5.3 Recommandations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3.1 Optimisation eventuelles . . . . . . . . . . . . . . . . . . . . 35
6 Glossaire 38
A Annexes 41
Table des gures
3.1 Mod` ele MVC du ltre . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Repr esentation dune expression de ltre en arbre n-aire . . . . . . . 14
3.3 Repr esentation dune expression de ltre en arbre binaire . . . . . . . 15
3.4 Repr esentation dune expression avec parenth` eses . . . . . . . . . . . 15
3.5 Diagramme de classes du module noyau . . . . . . . . . . . . . . . . 18
3.6 Diagramme de s equence du module textuel . . . . . . . . . . . . . . 20
3.7 Diagramme de classes du module graphique . . . . . . . . . . . . . . 21
3.8 Diagramme de s equence du module graphique . . . . . . . . . . . . . 22
4.1 D ependance des modules textuels . . . . . . . . . . . . . . . . . . . 28
4.2 Module ltre graphique . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Exemple darbre de ltrage . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Exemple de parcours darbre de ltrage . . . . . . . . . . . . . . . . 31
5.1

Evolution du temps de construction de larbre binaire . . . . . . . . . 35
iii
Liste des tableaux
3.1 Op erateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Champs de ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Op erateurs math ematique . . . . . . . . . . . . . . . . . . . . . . . . 13
3.4 Heuristiques de larbre de ltrage . . . . . . . . . . . . . . . . . . . . 16
3.5 Widgets de FilterViewerData . . . . . . . . . . . . . . . . . . . . . . 21
3.6 Widgets de FilterViewerData . . . . . . . . . . . . . . . . . . . . . . 22
4.1 Exemple d etat des traces . . . . . . . . . . . . . . . . . . . . . . . . 30
iv
Liste des Algorithmes
1 Pr ecompilation du ltre . . . . . . . . . . . . . . . . . . . . . . . . . 25
2 Parcours du ltre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
v
Listes des symboles et
abr eviations
Ltt Linux Trace Toolkit
Lttv Linux Trace Toolkit Viewer
vi
LISTES DES SYMBOLES ET ABR

EVIATIONS vii
Remerciements
Michel Dagenais, pour mavoir donn e la chance de travailler sur un projet den-
vergure comme Lttv.
Mathieu Desnoyers, pour son aide et ses conseils tout au long du projet.
Chapitre 1
Introduction
Dans le cadre dune etude approfondie du syst` eme dexploitation, il est primordial
de proc eder ` a une analyse des processus de m eme que leur ordonnancement au sein du
noyau. Ainsi, pour les syst` emes dexploitations Linux, le Linux Trace Toolkit a depuis
plusieurs ann ees maintenant fourni une s erie dapplications permettant de g en erer des
traces dex ecution du syst` eme dexploitation puis de proc eder ` a leur analyse. le Linux
Trace Toolkit ( ou ltt ) a et e d evelopp e ` a lorigine par Opersys.
L` a o` u le Linux Trace Toolkit poss` ede des failles, le Linux Trace Toolkit Viewer
prend la rel` eve. Cette application est d evelopp ee au laboratoire de Conception et Ana-
lyse de Syst` emes Informatiques ( ou CASI ) de l

Ecole Polytechnique. Le Linux Trace


Toolkit Viewer ( ou Lttv ) est une application totalement modulaire permettant aux usa-
gers de faire lanalyse de traces dex ecution tout en y rajoutant leurs propres modules
personnalis es.
Lespace en m emoire que peut prendre une trace dex ecution sur Lttv d ependra
de plusieurs facteurs. Entres autres, le temps denregistrement de la trace aura une
1
CHAPITRE 1. INTRODUCTION 2
cons equence proportionnelle sur la taille de celle-ci. De m eme, le nombre de pro-
cessus ordonnanc es aura un effet direct sur lenregistrement. An de donner ` a lusa-
ger un meilleur contr ole de ce quil veut analyser et afcher, il est possible dajouter
un module de ltre au programme qui permettra ` a lusager de choisir par expression
conditionnelle quels el ements de trace il d esire conserver. Le chapitre 2 propose une
d enition compl` ete du probl` eme ` a r esoudre et des principales difcult es du projet.
Limplantation dun module ltre au programme actuel n ecessite ` a la base une
pr ecompilationdun arbre de ltrage qui sera parcouru lors de lex ecution pour d eterminer
quels el ements de traces doivent etre ltr es.
An dinclure un module de ltrage au programme Lttv, il est n ecessaire dajouter
trois nouveaux modules au programme. Un module noyau servira ` a construire et par-
courir larbre de recherche. Un module textuel servira dinterface de base ` a lusager.
Enn, un module graphique servira dinterface plus evolu ee. Le chapitre 3 fournit les
d etails dimplantation de ces modules au sein du projet.
Gr ace ` a un d eveloppement modulaire reli e aux fonctionnalit es de base du pro-
gramme Lttv, il est possible de proc eder ` a un ltrage selon les sp ecications de lutili-
sateur. Le chapitre 4 donne des informations suppl ementaires quant aux fonctionnalit es
ajout ees aux diff erents modules utilisateurs ainsi quau module noyau.
Enn, de multiples am eliorations pourront encore etre apport ees au programme
ainsi qu` a la gestion des ltres. En effet, ce projet napportera que la premi` ere phase de
ltrage op erationnelle au programme Lttv. Ainsi, le chapitre 5 apportera des sugges-
tions dam eliorations possibles qui peuvent etre apport ees aux modules de ltrage.
Chapitre 2
Probl ematique
2.1 Mise en contexte
2.1.1 Travaux ant erieurs
Le Linux Trace Toolkit Viewer a fait lobjet de plusieurs travaux durant les derni` eres
ann ees. Cest aujourdhui un projet imposant et aux fonctionnalit es diverses qui ne peut
etre malheureusement d ecrit en quelques lignes. Il est possible toutefois de r esumer les
principaux points qui permettent ` a Lttv de se diff erencier de son pr ed ecesseur Ltt.
La suite dapplication Ltt donne ` a lutilisateur la possibilit e de voir et analyser lor-
donnancement des divers processus dans le noyau au cours dune trace pr eenregistr ee.
Toutefois, il convient de dire que cette suite dapplication reste limit ee quant au contr ole
visuel des traces et lajout de fonctionnalit es nouvelles.
Ainsi, Lttv permet ` a lutilisateur un contr ole statistique des processus beaucoup
plus pouss e. L` a o` u Ltt ne donne que les processus actifs, Lttv afche l etat m eme du
processus actif. De m eme, Lttv permet lafchage des statistiques et des ev enements de
3
CHAPITRE 2. PROBL

EMATIQUE 4
chaque processus.
Aussi, il convient de savoir que Lttv est un programme hautement modulaire et qui
donne la possibilit e ` a un utilisateur tierce de programmer lui-m eme de nouvelles fonc-
tionnalit es pour le programme sans interf erer avec le noyau de celui-ci.
Par ailleurs, chaque module est compil e en tant que librairie dynamique ( *.so pour
Linux ). Au d emarrage du programme, lutilisateur peut ais ement inclure ` a m eme lap-
plication les librairies souhait ees en utilisant la ligne de commande, ou par lutilisation
de linterface graphique de Lttv.
2.1.2 Travail ` a accomplir
La nalit e de ce projet est dajouter au programme Lttv d ej` a existant une fonction-
nalit e de ltrage des traces dex ecution. Cette nouvelle fonctionnalit e a donc pour but
domettre en sortie du programme certains processus, traces ou ev enements sp eci es
pr ealablement par lutilisateur.
2.2 Objectifs
Le ltrage des traces dex ecution demande limplantation de fonctionnalit es ` a trois
niveaux :
Implantation dun module ltre au niveau noyau
Implantation dun module utilisateur textuel
Implantation dun module utilisateur graphique
Lapplication doit donner la possibilit e ` a lutilisateur de sp ecier ses options de
ltrages par voie textuelle ou par utilisation de linterface graphique. Cette expres-
sion de ltrage devra par la suite etre trait ee par le module noyau qui proc` edera ` a une
CHAPITRE 2. PROBL

EMATIQUE 5
compilation dun arbre de recherche binaire. Enn, ce m eme arbre sera parcouru pour
d eterminer si chaque el ement doit etre conserv e ou retir e de lafchage.
Ainsi, il sera n ecessaire dimplanter les fonctionnalit es suivantes au niveau noyau de
lapplication :
Analyse de lexpression de ltrage de lutilisateur
Construction dun arbre de ltrage
Parcours de cet arbre de ltrage pour chaque ev enement du programme
2.3 Int er ets
Gr ace aux ltres, lutilisateur pourra acqu erir un bien meilleur contr ole de lappli-
cation. Celui-ci pourra ais ement sp ecier quels el ements de trace il d esire analyser.
Bien que ceci puisse paratre anodin pour des traces l eg` eres, ce nest pas le cas
pour des traces de longue dur ee. En effet, il convient de savoir que plus longue est la
trace, plus long est le temps de traitement de celle-ci. Gr ace ` a un ltrage pr eliminaire
` a lanalyse de la trace, lutilisateur peut donc etre en mesure de diminuer le temps de
traitement des traces.
2.4 Difcult es escompt ees
2.4.1 S eparation du probl` eme
An de bien concevoir le probl` eme ` a r esoudre, il est dabord primordial de pouvoir
s eparer les diff erents modules dimplantation au sein de lapplication. En effet, comme
il a d ej` a et e mentionn e ` a la section 2.2 de ce chapitre, le ltre Lttv se s epare en trois
sous-modules principaux : Le module noyau, le module graphique et le module textuel.
CHAPITRE 2. PROBL

EMATIQUE 6
Le module noyau se veut etre le centre de limplantation du ltrage de lapplica-
tion. Ainsi, les modules graphiques et textuels d ependront enti` erement du noyau pour
assurer leur propre fonctionnement.
Pour assurer un avancement du probl` eme, il sera n ecessaire de commencer lim-
plantation du ltre noyau d` es le d ebut. Par ailleurs, le noyau ` a lui tout seul constitue un
goulot d etranglement pour le projet. En effet, cette section de lapplication demandera
une analyse logicielle pouss ee et une implantation tout aussi critique. Une analyse en
bonne et due forme de la structure du noyau sera fournie au chapitre 3.
Enn, mentionnons aussi que linterfacage avec lusager pourra se faire plus tard
et nest pas un r eel souci dimplantation. En effet, le module graphique et le module
textuel ne feront que faire appel au module noyau pour envoyer ` a celui-ci lexpression
de ltrage n ecessaire ` a la construction de larbre.
2.4.2 D enition de lexpression de ltrage
Pour permettre ` a lutilisateur de sp ecier quels el ements de trace il d esire ltrer, il
est dabord n ecessaire de formuler une expression de ltrage textuelle. Celle-ci devra
respecter les crit` eres suivants :
1.

Etre compr ehensible pour lutilisateur du programme
2. Tenir compte des crit` eres de ltrage du programme Lttv
3. Poss eder une structure simple qui peut etre analys e par lapplication
De m eme, il convient de formuler une expression qui laisse la possibilit e ` a lusager
de fournir plusieurs commandes de ltrages vari ees tout en gardant sa simplicit e duti-
lisation.
CHAPITRE 2. PROBL

EMATIQUE 7
Nous analyserons plus en profondeur les d etails de lexpression de ltrage ` a la
section 3.1.4 du chapitre 3.
2.4.3 Larbre de recherche
Larbre de ltrage est ` a la base de lint egration du ltre au sein du programme Lttv.
Ainsi, il repr esente de ce fait le plus grand probl` eme ` a surmonter dans ce projet. Il
convient donc de bien d enir la structure que devra prendre cet arbre pour se confor-
mer aux requ etes de ltrage de lutilisateur et interagir avec les el ements du programme
d ej` a existants.
La probl ematique de larbre se divise en deux volets distincts, soit la construction
de larbre et le parcours de celui-ci. Pour ne pas handicaper les performances de lap-
plication, il sera n ecessaire de proc eder ` a une pr ecompilation de larbre de recherche
avant le lancement des traces.
Une analyse pr eliminaire de la structure de larbre et ses composantes est effectu ee
` a la section 3.1.5 du chapitre 3.
Chapitre 3
M ethodologie
3.1 Analyse
3.1.1 Requis de lapplication
An de mieux cerner les modules ` a implanter au sein du programme Lttv, voici les
fonctionnalit es principales que devra r ealiser le ltre dans lapplication
Requis fonctionnels
D eveloppement du module textuel
Ajout doptions ` a la ligne de commande pour entr ee des expressions de ltrage
D ependance avec les autres modules textuels
D eveloppement du module graphique
Conception dune interface graphique permettant ` a lusager dajouter des ex-
pressions de ltrage
Par menus d elants
Par entr ee textuelle
Envoi de lexpression de ltrage au noyau
8
CHAPITRE 3. M

ETHODOLOGIE 9
D ependance avec les autres modules graphiques
D eveloppement du module noyau
Analyse de lexpression de ltrage
Construction de larbre de ltrage
Parcours de larbre de ltrage
Requis non-fonctionnels
Souci de performance
Construction de larbre ( module noyau )
Parcours de larbre ( module noyau )
3.1.2 Langage dimplantation
Pour satisfaire ` a limplantation d ej` a existante du Linux Trace Toolkit Viewer, il est
pr ef erable dutiliser le m eme langage dimplantation. Ainsi, les modules de ltrage
sont cod es en Langage C. Outre une n ecessit e de compatibilit e, ce choix repose aussi
sur des soucis de performances que fourni un langage de plus bas niveau tel que le C.
De m eme, Lttv fait aussi utilisation du Gimp Toolkit ou GTK[5] pour son interface
graphique. Ainsi, le module graphique de ltrage d ependra aussi de ces librairies. Fi-
nalement, il convient de mentionner lutilisation etendue de la librairie GLib[4] partout
dans le projet. En effet, cette librairie red enit plusieurs structures utiles propres au
C++ pour une utilisation en C.
3.1.3 Analyse g en erale du probl` eme
An de bien cerner le probl` eme dans son ensemble, il convient de proc eder ` a une
analyse g en erale de limplantation par rapport au reste du programme Lttv. Ainsi, il est
possible de comparer les diff erents modules de ltrage selon une architecture Mod` ele-
CHAPITRE 3. M

ETHODOLOGIE 10
Vue-Contr ole telle que pr esent ee ` a la gure 3.1.
Contr ole Mod` ele Vue
Entr ee texte
Entr ee graphique
Filtre noyau
Text dump
Gui Events
Gui controlow
Gui statistics
FIG. 3.1 Mod` ele MVC du ltre
Ainsi, le module noyau de ltrage doit repr esenter le centre de lapplication. Cest
ce module qui sera appel e par les autres pour acc eder aux fonctions de cr eations, mise
` a jour, parcours et destruction du ltre.
Par ailleurs, les modules de ltrage textuel et graphique repr esentent le contr ole
de lapplication. Il sagit donc dinterfaces avec lusager lui permettant de sp ecier le
ltre ` a utiliser.
Enn, les modules graphiques gui controlow, gui events et gui statistics utiliseront
linformation des ltres an de modier leur afchage. De m eme, le module textuel text
dump utilisera le ltre an de produire un afchage ` a la console. Ces quatre derniers
modules ont d ej` a et e implant es lors de travaux ant erieurs sur le Linux Trace Toolkit
CHAPITRE 3. M

ETHODOLOGIE 11
Viewer. Toutefois, des appels suppl ementaires devront etre ajout es ` a ces modules pour
int egrer les nouvelles fonctionnalit es du ltre.
3.1.4 Analyse de lexpression de ltrage
La prochaine etape dans lanalyse du probl` eme consiste ` a formuler une expression
de ltrage. Cette expression sera par la suite utilis ee dans la construction de larbre de
recherche. Ainsi, bien que lexpression en soit ne constitue quun interm ediaire entre
lusager et lapplication noyau, une structure forte de cette commande permettra une
analyse simpli ee de celle-ci par la suite. De m eme, lexpression doit etre en mesure
de survivre ` a une evolution eventuelle des options de ltrage dans les modications
eventuelles de Lttv ou m eme du noyau Linux.
Ainsi, ` a la base, nous d enirons une option de ltrage comme suit :
[Champs] [Op erateur] [Valeur]
Cette chane de caract` eres sera appel ee une expression simple. Il sagit du plus
bas atome dans lexpression de ltrage. En effet, lexpression est form ee de plusieurs
expressions simples diff erentes. Celles-ci sont li ees entre-elles par des op erateurs lo-
giques. Le tableau 3.1 r esume les op erateurs utilis es dans une expression.
Op erateur Encodage Niveau de liaison
ET & 2 expressions simples
OU | 2 expressions simples
OU EXCLUSIF 2 expressions simples
NON ! 1 expression simple
TAB. 3.1 Op erateurs logiques
Pour en revenir ` a lexpression simple, attardons-nous ` a la d enition du champs
(eld) de loption de ltrage. Ce champs fait le lien avec la structure des ev en ements
CHAPITRE 3. M

ETHODOLOGIE 12
Lttv. Un ev enement peut prendre la forme dune trace, dun chier de trace, dun etat
de processus ou dun ev enement Ltt. Le tableau 3.2 fait etat des diff erents champs de
ltrage Lttv de m eme que leurs sous-champs respectifs.
Champs primaire Champs secondaire Encodage Valeur
event name event.name Quark
category
1
event.category Quark
time event.time LttTime
tsc event.tsc Unsigned int 32
elds event.elds.(...)
2
Non d eni
tracele name tracele.name Quark
trace name trace.name Quark
state pid state.pid Unsigned int 64
ppid state.ppid Unsigned int 64
creation time state.creation time LttTime
insertion time state.insertion time LttTime
process time state.process time Quark
execution mode state.execution mode Unsigned int 16
execution submode state.execution submode Unsigned int 16
process status state.process status Unsigned int 16
cpu state.cpu Quark
TAB. 3.2 Champs de ltrage
Pour associer le champ de r ef erence Lttv ` a une valeur de ltrage, il est n ecessaire
dutiliser un op erateur math ematique. Ainsi, lors du ltrage dune expression simple,
cest cet op erateur qui d ecidera si la condition de ltrage est respect ee ou non. Les
diff erents op erateurs math ematiques sont d enis au tableau 3.3.
Pour compl eter lexpression simple, lusager devra sp ecier lui-m eme la valeur
de ltrage.
`
A lentr ee textuelle, il est possible de sp ecier des valeurs sous forme de
chanes de caract` eres, valeurs d ecimales ou bien ottantes. Ces valeurs seront ensuite
converties dans un format se pr etant ` a une evaluation rapide au ltrage. Ainsi, nous
1
Le sous-champ na pas encore pu etre implant e au programme Lttv, il est toutefois pris en compte dans
la structure de ltrage et pourra etre int egr e eventuellement
2
Ce type dexpression peut poss eder plus dun sous-champ. Ceux-ci sont d enis dans le chier core.xml
CHAPITRE 3. M

ETHODOLOGIE 13
Op erateur Encodage Valeurs de comparaisons

Egal = Quark, LttTime, Integer


In egal ! = Quark, LttTime, Integer
Plus grand > LttTime, Integer
Plus grand ou egal >= LttTime, Integer
Plus petit < LttTime, Integer
Plus petit ou egal <= LttTime, Integer
TAB. 3.3 Op erateurs math ematique
repr esenterons la chane de caract` ere comme un Quark
3
et les valeurs temporelles sous
forme de LttTime
4
.
Finalement, mentionnons aussi que lusager ` a la possibilit e de rafner lexpression
pr esente sil le d esire. Ainsi, il est possible de combiner des sous-expressions en utili-
sant des parenth` eses. La sous-expression ainsi exprim ee sera evalu ee individuellement
des autres expressions simples.
3.1.5 Analyse de la structure de larbre
Construction de larbre
`
A laide de lexpression de ltrage maintenant d enie, il est possible de construire
un arbre de ltrage qui constituera par la suite la structure ofcielle du ltrage. Or, pour
assurer un parcours efcace de cet arbre lors de lex ecution, il convient de choisir une
structure darbre simple, mais efcace.
Dans un premier temps, rappelons la forme que prendra larbre par rapport ` a lex-
pression de ltrage. Ainsi, on suppose lexpression suivante :
f (x) = A(x)&B(x)&C(x)&D(x)
3
Un quark est une association integer-string
4
Structure compos ee de deux champs integer sp eciant les secondes et nanosecondes
CHAPITRE 3. M

ETHODOLOGIE 14
Dans cette expression, A(x), B(x), C(x) et D(x) repr esentent des expressions simples.
Comme sp eci e auparavant, chaque expression simple est s epar e par un op erateur lo-
gique, dans ce cas, un ET binaire. Dans un arbre, une expression simple est repr esent ee
par une feuille. Lop erateur logique quant ` a lui, prend la forme dun noeud. Ainsi, il est
possible de repr esenter l equation pr ec edente par larbre n-aire repr esent e ` a la gure
3.2.
AND
A B C D
FIG. 3.2 Repr esentation dune expression de ltre en arbre n-aire
Avec cette structure darbre, il est toutefois impossible de connatre ` a lavance le
nombre denfants de chaque noeud [7]. Son implantation demanderait donc la cr eation
dun vecteur des diff erents enfants.
An de r egulariser la structure de larbre, il est possible dutiliser un arbre plus
simple. Ainsi, pour les besoins de cette application, nous pencherons pour larbre bi-
naire. Larbre binaire est une structure dimplantation simple qui poss` ede au plus deux
noeuds [7][2][1]. De m eme, cette structure peut facilement etre implant e dans un es-
pace m emoire continu [7], ce qui peut aider ` a limiter les d eplacements en m emoire.
La forme de larbre est beaucoup plus intuitive que celle de larbre binaire. En
effet, il est possible de remarquer que les enfants directs dun noeud op erateur sont
directement les expressions simples qui sont ses voisins physiques dans lexpression
initiale. La gure 3.3 repr esente larbre binaire pour l equation analys ee pr ec edemment
CHAPITRE 3. M

ETHODOLOGIE 15
AND
A AND
B AND
C D
FIG. 3.3 Repr esentation dune expression de ltre en arbre binaire
Lexpression analys ee demeure encore relativement simple. Comme sp eci e pr ec edemment,
il est possible de former des sous-expressions en utilisant les parenth` eses. Cette mesure
aura cependant un effet direct sur la structure de larbre. Prenons par exemple lexpres-
sion suivante :
f (x) = (A(x)&B(x))&(C(x)&D(x))
Il est possible de repr esenter cette nouvelle expression par larbre de la gure 3.4.
AND
AND AND
A B C D
FIG. 3.4 Repr esentation dune expression avec parenth` eses
CHAPITRE 3. M

ETHODOLOGIE 16
Enn, il est possible de remarquer que les op erateurs logiques ET, OU et OU
EXCLUSIF formeront toujours deux enfants dans larbre. Or, lop erateur NON consti-
tue lexception ` a cette r` egle et nadmet quun seul enfant.
Parcours de larbre
Une fois larbre de ltrage construit, il sera n ecessaire den effectuer le parcours.
Cette etape de ltrage devient cruciale par son emplacement dans la s equence dex ecution
du programme. En effet, le ltre devra etre appel e pour chaque ev enement de la trace
en ex ecution. Il est donc imp eratif sous ces conditions de fournir le r esultat de ltrage
le plus rapidement possible.
Sous cette optique, larbre binaire garantit un parcours simple et rapide de larbre.
Or, il est possible dam eliorer le rendement de parcours en utilisant des heuristiques
si cela est possible. Puisque les expressions de ltrage utilisent des op erateurs bi-
naires pour s eparer chaque noeud, il peut parfois etre inutile d evaluer le r esultat dune
branche si la pr ec edente ` a d ej` a fourni un r esultat qui donne une r eponse nale. Le ta-
bleau 3.4 repr esente les diff erentes heuristiques admissibles par la structure de larbre.
Op erateur de liaison R esultat de la branche de gauche R esultat nal
OU VRAI VRAI
ET FAUX FAUX
TAB. 3.4 Heuristiques de larbre de ltrage
Nous verrons plus loin ` a la section 3.3.2 comment ces heuristiques seront im-
plant ees au programme.
3.2 Conception
La conception est la derni` ere etape avant de passer ` a limplantation du ltre. Dans
cette section, nous analyserons la mod elisation UML du ltre et des modules avec les-
CHAPITRE 3. M

ETHODOLOGIE 17
quels il interagit.
Bien entendu, il convient de se rappeler que Lttv est implant e en langage C, qui nest
pas ` a proprement dit orient e objet. Toutefois, la philosophie dimplantation g en erale du
programme Lttv et celle de limplantation des ltres suit une structure de conception
hautement orient e objet et permet donc une analyse UML sommaire.
3.2.1

Etapes de conception

Etape 1 : Filtre au niveau noyau


La conception du ltre au niveau noyau se r esume ` a la structure de larbre de l-
trage et des classes desquelles il d epend. Ainsi, la gure 3.5 repr esente les diff erentes
classes du syst` eme et leurs inter relations.
Le ltre noyau est ofciellement compos e de trois classes, soit la classe LttvFilter,
LttvFilterTree et LttvSimpleExpression.
La classe LttvFilter est le si` ege du ltre dans lapplication. Cest cet objet qui
repr esentera le ltre cr e e et transmis au reste de lapplication. cette classe contient
un objet de la classe LttvFilterTree et la chane dexpression telle quenvoy e ` a lorigine
par lusager pour reconstitution eventuelle.
La classe LttvFilterTree repr esente larbre de ltrage cr e e ` a partir de lexpression de
ltrage. Cette classe repr esente limplantation dun arbre binaire. Le noeud de larbre
est identi e gr ace ` a lattribut node. Celui-ci prend comme valeur un op erateur logique
qui lie les deux noeuds enfants entre eux. Ensuite, un noeud enfant dans larbre est
identi e ` a partir dun objet union TreeNode. Cet objet peut prendre soit etre une ex-
pression simple LttvSimpleExpression ou un sous-arbre LttvFilterTree.
CHAPITRE 3. M

ETHODOLOGIE 18
FIG. 3.5 Diagramme de classes du module noyau
Enn, la classe LttvSimpleExpression repr esente les feuilles de larbre binaire. Chaque
expression simple est constitu e des attributs eld, offset, op et value. En premier lieu,
lattribut eld est le num ero de champ de ltrage. Lattribut op est un pointeur vers
une des fonctions de comparaison des valeurs de ltrage. Lattribut value est un objet
union LttvFieldValue qui repr esente la valeur de comparaison du ltrage encod e dans
le format appropri e. Enn lattribut offset sera eventuellement utilis e pour retracer ef-
CHAPITRE 3. M

ETHODOLOGIE 19
cacement les champs de ltrage dynamiques qui nont malheureusement pas pu etre
implant es au cours de ce projet.

Etape 2 : Module ltre textuel


Le module ltre textuel repr esente bien la partie la plus ais ee du projet ` a conce-
voir. En effet, ce module na aucune structure logicielle ` a proprement parler. Toutefois,
il convient de mentionner les diverses interactions que ce module devra entreprendre
avec les autres modules textuels ainsi que le noyau. La gure 3.6 afche le diagramme
de s equence qui caract erise la situation.
Ainsi, en premier lieu, le module ltre textuel envoie la chane de ltrage au module
batchAnalysis qui soccupera de la cr eation et sauvegarde du ltre. Par la suite, lors
dune demande de ltrage, le module textDump r ecup erera le ltre de batchAnalysis et
proc edera au ltrage par un appel au module noyau.
CHAPITRE 3. M

ETHODOLOGIE 20
FIG. 3.6 Diagramme de s equence du module textuel

Etape 3 : Module ltre graphique


Le module ltre graphique demande une conception l eg` erement plus pointue que
le ltre textuel. En effet, bien que la sortie des deux modules soit identique, le module
graphique demande une conception dinterface. Ainsi, le module graphique peut etre
repr esent e par le diagramme de classe de la gure 3.7.
Ce diagramme nest compos e que de deux classes, soit les classes FilterViewerData
et FilterViewerDataLine.
CHAPITRE 3. M

ETHODOLOGIE 21
FIG. 3.7 Diagramme de classes du module graphique
La classe FilterViewerData contient toute linformation propre au module gra-
phique. Ainsi, on y retrouve les diff erents widgets qui composent linterface. Pour plus
dinformations, le tableau 3.5 sp ecie lutilit e des principaux widgets.
Widget Repr esentation
f main box Conteneur principal du module graphique
f expression eld Champ dentr ee de lexpression textuelle
f process button Bouton denvoi du ltre
f add button Ajout de sous-expression au ltre
f logical op junction box Op erateur de liaison de sous-expressions
TAB. 3.5 Widgets de FilterViewerData
La classe FilterViewerDataLine repr esente les expressions simples que lusager
pourra choisir parmi les botes de choix. Des objets de cette classe sont ajout es dans
un vecteur d el ements de la classe FilterViewerData pour conserver linformation de
chaque expression simple ajout ee par lusager. La gure 3.6 sp ecie lutilit e des wid-
gets pour cette classe.
`
A partir de cette interface, il est maintenant possible de formuler une expression de
CHAPITRE 3. M

ETHODOLOGIE 22
Widget Repr esentation
f not op box Inverseur de lexpression simple
f eld box Champ de ltrage
f math op box Op erateur math ematique
f value eld Valeur de comparaison
f logical op box Op erateur de liaison de lexpression simple suivante
TAB. 3.6 Widgets de FilterViewerData
ltrage qui sera envoy e au ltre noyau. On peut maintenant analyser linteraction entre
le module graphique et les autres modules par un diagramme de s equence repr esent e ` a
la gure 3.8.
FIG. 3.8 Diagramme de s equence du module graphique
CHAPITRE 3. M

ETHODOLOGIE 23
Une fois lexpression de ltrage lanc ee par lutilisateur, le module graphique cr ee
lui-m eme larbre de ltrage et puis enregistre le ltre sur la fen etre LttvWindow corres-
pondante. Lorsque les modules graphiques requerront un quelconque ltrage, ceux-ci
pourront r ecup erer le ltre par un appel ` a cette m eme fen etre LttvWindow.
3.2.2 Documentation
An de laisser un code clair et lisible au d eveloppeur futur, une bonne documen-
tation est de mise dans tout projet. Ainsi, ce projet mettra en oeuvre la syntaxe de
documentation Doxygen[6] pour construire une r ef erence g en erale de lAPI. Doxygen
permet de g en erer une documentation dans plusieurs formats diff erents (html, rtf, man
pages) et constitue donc un support standard sur toute plate forme. Il est possible de
voir une partie de la documentation Doxygen g en er ee pour les modules de ltre en
annexes.
3.3 Implantation
Pour lint er et de ce projet, la description de limplantation se limitera aux fonc-
tionnalit es du module noyau qui demeure le plus important. Celui-ci se s epare en deux
sections quon pourrait d ecrire comme suit : pr ecompilation du ltre et parcours du
ltre.
3.3.1 Pr ecompilation du ltre
La pr ecompilation du ltre a lieu avant lanalyse des traces. Il sagit de la conver-
sion de lexpression de ltrage textuelle en arbre de ltrage. Pour des raisons de perfor-
mance, lanalyse de lexpression de ltrage et la construction de larbre se font simul-
tan ement. Lordre de complexit e de cet algorithme est donc directement proportionnel
` a la longueur de lexpression de ltrage.
CHAPITRE 3. M

ETHODOLOGIE 24
Lalgorithme 1 repr esente limplantation g en erale de parcours de lexpression et
de construction de larbre binaire. Pour chaque caract` ere de lexpression de ltrage,
on construira une partie de larbre. Une structure de pile a et e instanci ee de facon ` a
conserver larbre et les sous-arbres au fur et ` a mesure de sa construction.
3.3.2 Parcours du ltre
Bien que cette partie du module noyau demeure la plus critique en terme de perfor-
mance, le parcours du ltre poss` ede une implantation beaucoup plus simple. En effet,
il sagit dun parcours inordre de larbre binaire. De cette facon, il est possible dappli-
quer le ltre gauche en premier et puis de d ecider selon la valeur de lop erateur logique
sil est pr ef erable ou non de parcourir la branche de droite.
Ces conditions du parcours inordre de larbre sont les heuristiques dont il a et e fait
lanalyse plus t ot ` a la section 3.1.5 de ce chapitre. Lalgorithme 2 d ecrit limplantation
du parcours dans le module noyau.
CHAPITRE 3. M

ETHODOLOGIE 25
Alg. 1 Pr ecompilation du ltre
1: lter est lobjet ltre
2: expression est lexpression de ltrage
3: tree est larbre de ltrage principal
4: subtree est un tampon pour un sous-arbre
5: tree stack repr esente la pile de tous les sous-arbres
6: p nesting est la variable de contr ole des sous-expressions
7: not est la variable de contr ole des inversions
8: p nesting 0
9: pour i 0 jusqu` a taille de lexpression
10: si expression[i] =

&

ou

|

ou alors
11: si op erateur NON sp eci e alors
12: Concat ener un sous-arbre NON ` a larbre courant
13: non FALSE
14:
15: si subtree existe alors
16: Cr eer un nouveau sous-arbre t
17: Assigner lop erateur logique ` a larbre t
18: Concat ener subtree ` a la branche gauche du nouvel arbre t
19: Concat ener t ` a la branche droite de larbre courant
20: sinon
21: Cr eer lexpression simple
22: Cr eer un nouveau sous-arbre t
23: Assigner lop erateur logique ` a larbre t
24: Ajouter lexpression simple ` a la branche gauche du nouvel arbre t
25: Concat ener t ` a la branche droite de larbre courant
26:
27: sinon si expression[i] =

alors
28: not TRUE
29: sinon si expression[i] =

ou

[

ou

{

alors
30: p nesting p nesting+1
31: Cr eer un nouveau sous-arbre
32: Empiler ce sous-arbre sur la pile tree stack
33: sinon si expression[i] =

ou

]

ou

}

alors
34: p nesting p nesting1
35: si op erateur NON sp eci e alors
36: Concat ener un sous-arbre NON ` a larbre courant
37: not FALSE
38:
39: si subtree existe alors
40: Concat ener subtree ` a la branche droite de larbre courant
41: D epiler la pile tree stack sur lobjet subtree
42: sinon
43: Cr eer lexpression simple
44: Ajouter lexpression simple ` a la branche droite de larbre courant
45: Concat ener t ` a la branche droite de larbre courant
46: D epiler la pile tree stack sur lobjet subtree
47:
48: sinon si expression[i] =

>

ou

>=

ou

=

ou

! =

ou

<

ou

<=

alors
49: Enregistrer le champ dans lexpression simple
50: Assigner la fonction propre ` a lop erateur pour lexpression simple
51: sinon
52: Concat ener expression[i] au tampon dexpression
53:
54:
55: Enregistrer la derni` ere expression simple ` a lextr eme droite de larbre
CHAPITRE 3. M

ETHODOLOGIE 26
Alg. 2 Parcours du ltre
1: lresult est le r esultat de la branche gauche
2: lresult est le r esultat de la branche droite
3: t est larbre courant
4: lresult FALSE
5: rresult FALSE
6: si le ls gauche de t est une feuille alors
7: lresult r esultat du ltre
8: sinon si le ls gauche de t est un noeud alors
9: lresult parcours de la branche gauche de larbre
10: 11: si op erateur de t est un ou et lresult est vrai alors
12: retourner TRUE
13:
14: si op erateur de t est un et et lresult est faux alors
15: retourner FAUX
16: 17: si le ls droit de t est une feuille alors
18: rresult r esultat du ltre
19: sinon si le ls droit de t est un noeud alors
20: rresult parcours de la branche droite de larbre
21: 22: retourner lop eration entre rresult et lresult
Chapitre 4
R esultats
4.1 Entr ees du programme
4.1.1 Utilisation du module ltre textuel
Le module de ltrage textuel a et e implant e de facon ` a etre instanci e avant m eme
le module batchAnalysis qui demeure le si` ege de lappel des traces dans les modules
textuels. On retrouve ainsi la sch ema de d ependance modulaire tel quillustr e ` a la gure
4.1
Pour d emarrer une analyse de trace en utilisant le ltre textuel, il est possible dutiliser
la syntaxe suivante ` a la ligne de commande :
>> lttv -m textDump -m batchAnalysis -e "expression_de_filtre"
-f "fichier_de_filtre" -t nom_de_la_trace
Le module de ltrage implante lutilisation de deux supports de ltres diff erents :
par chier local ou par ligne de commande. Il est possible dutiliser ces options s epar ement
ou en m eme temps tel que d emontr e dans lexemple pr ec edent.
27
CHAPITRE 4. R

ESULTATS 28
textFilter
textDump
batchAnalysis
D epend de
D epend de
FIG. 4.1 D ependance des modules textuels
expression,-e
Entr ee dune expression ` a la ligne de commande. Cette commande est utilis ee pour
des expressions de ltrage courtes
lename,-f
Entr ee dune expression contenue dans un chier local. Cette commande peut etre
utile lorsque lutilisateur requiert un ltrage pointu des traces dex ecution.
Par ailleurs, il est important de savoir que les expressions fournies simultan ement
seront par la suite concat en ees en une seule expression ind ependante. Lop erateur de
liaison qui fait le pas entre les sous-expressions est le ET logique.
4.1.2 Utilisation du module ltre graphique
Un module de ltrage graphique a et e implant e au sein du programme Lttv conform ement
aux sp ecications du projet. Ainsi, il est possible de voir un apercu de ce module en
CHAPITRE 4. R

ESULTATS 29
interaction avec le module guicontrolow ` a la gure 4.2
FIG. 4.2 Module ltre graphique
1 Cet ic one sert ` a actionner le module de ltre
2
Ce champ repr esente lexpression de ltrage textuelle qui sera en-
voy ee au ltre noyau. Cette expression peut etre modi ee directe-
ment, ou par lajout de nouvelles sous-expressions par les botes de
choix (5).
3
Ce bouton permet ` a lusager denvoyer lexpression du champ de l-
trage au ltre noyau. Le ltre construira par la suite larbre ` a partir de
cette expression.
CHAPITRE 4. R

ESULTATS 30
4
Ce bouton permet ` a lusager de rajouter les diff erentes options de
ltrage sp eci es dans les botes de choix au champ de ltrage. Si
une expression est d ej` a pr esente dans ce champ, la nouvelle sous-
expression sera concat en e par un op erateur logique choisi.
5
Ces botes de choix permettent ` a lusager de former des expressions
de ltrage. Chaque ligne repr esente une expression simple constitu ee
dans lordre du champ de ltrage ( voir gure 3.2 pour plus de d etails
), dun op erateur math ematique, dune valeur et de lop erateur liant
cette expression ` a la prochaine si il y a lieu.
4.2 Sortie du programme
Pour bien illustrer les r esultats possibles du ltrage, nous proc ederons ` a lexemple
simple dun ltrage dun ev enement en analysant son parcours ` a travers larbre de
ltrage. Ainsi, nous poserons l etat repr esent e par le tableau 4.1
Champ de ltrage Valeur
event.name irq
event.category unknown
event.time 2000.00
event.tsc 50
trace.name toto
TAB. 4.1 Exemple d etat des traces
Il est donc possible avec le module de ltrage textuel ou graphique de sp ecier les
r` egles pr ecises de ltrage pour cet ev enement. Pour les besoins de notre exemple, nous
poserons lexpression de ltrage f = (event.time >200&trace.name =toto)&(event.tsc <
100|event.name = irq)
Cette expression peut maintenant etre traduite sous la forme dun arbre de recherche
binaire comme celui pr esent e ` a la gure 4.3.
CHAPITRE 4. R

ESULTATS 31
AND
AND OR
event.time >160 trace.name =toto event.tsc <80 event.name = irq
FIG. 4.3 Exemple darbre de ltrage
Gr ace ` a lalgorithme de parcours, le parcours de larbre sera all eg e des branches
que lheuristique jugera non n ecessaire. En effet, comme lexplique d ej` a la section
3.1.5 du chapitre 3, lheuristique utilis ee pour proc eder ` a l elagage de larbre de re-
cherche se base sur les propri et es de base des op erateurs logiques ET et OU et
renvoie toujours la bonne r eponse.
Ainsi, pour notre exemple, larbre r esultant du parcours est illustr e ` a la gure 4.4
AND
AND OR
event.time >160 trace.name =toto event.tsc <80 event.name = irq
1 1 1
1 1
1
FIG. 4.4 Exemple de parcours darbre de ltrage
Apr` es parcours de cet arbre, le ltre conserve l el ement de la trace en cours dana-
CHAPITRE 4. R

ESULTATS 32
lyse. Comme on peut le voir, lalgorithme de parcours de larbre a coup e la branche ` a
lextr eme droite. En effet, le test effectu e sur la troisi` eme branche de deuxi` eme niveau
( event.tsc < 100 ) a satisfait le condition de ltrage. De plus, comme lop erateur lo-
gique liant les deux branches entre elles est un OU logique, l evaluation du membre
de droite ne changera pas le r esultat du ltrage nal. Il a donc et e jug e plus utile ` a
lapplication de ne pas faire l evaluation de cette branche.
L elagage implant e pour le parcours de larbre binaire permettra eventuellement ` a
lapplication de ltrage de sauver beaucoup de temps d evaluation. En effet, la proba-
bilit e de proc eder ` a un elagage dans larbre de ltrage est directement proportionnelle
` a la taille de celui-ci.
Chapitre 5
Discussion
5.1 Port ee du travail
Limplantation des ltres demeure essentielle pour rendre le projet Lttv accessible
au grand public. Ainsi, les ltres permettront lanalyse de traces plus complexes en
permettant de cibler uniquement les el ements dont on fait lanalyse.
Par ailleurs, une grande attention a et e port ee sur la construction de larbre de l-
trage de m eme que son parcours. De cette facon, le ltre noyau constitue une entit e
distincte quil est possible de prendre pour base dans limplantation future des fonc-
tionnalit es secondaires du ltre.
5.2 Analyse des m ethodes exploit ees
5.2.1 Analyse de la performance
Le souci de performance est au coeur de limplantation du Linux Trace Toolkit Vie-
wer. Par ailleurs, il est important de rappeler que le moteur principal du ltrage se situe
33
CHAPITRE 5. DISCUSSION 34
au noyau m eme de lapplication et se doit de respecter un standard doptimalit e par
rapport au reste du noyau.
Nous verrons dans les sections suivantes les performances du module noyau test e
en simulation pour diff erentes expressions de ltrage.
Construction de larbre
Comme il a d ej` a et e mentionn e ` a la section 3.3.1 du chapitre 3, lanalyse de lex-
pression de ltrage et la construction de larbre binaire se font simultan ement. Cela
a donc pour effet de limiter les manipulations qui sont effectu ees sur lexpression de
ltrage et sur le temps de construction de larbre. De m eme, la complexit e de cet al-
gorithme d ependra directement de la longueur de la chane de caract` ere qui forme
lexpression.
Une analyse de complexit e de lalgorithme d emontrera qui celui-ci suit une asymp-
tote polynomiale dordre t(n) O(n
2
). Pour ns danalyse exp erimentale, la gure 5.1
repr esente l evolution du temps de construction selon la longueur de chane de ca-
ract` ere.
Ainsi, pour cette analyse exp erimentale, l evolution du temps de calcul suit l equation
t(n) = 710
7
n
2
+210
4
n+0.0896
Il convient de se souvenir que ces r esultats exp erimentaux proviennent dune ana-
lyse du cas moyen de complexit e de la construction de larbre binaire. En effet, une
expression de ltrage peut etre constitu e de nombreux el ements qui modient la com-
plexit e nale de lalgorithme.
CHAPITRE 5. DISCUSSION 35
0 2000 4000 6000 8000 10000 12000 14000
0
20
40
60
80
100
120
140
Nombre de caractres dans lexpression de filtrage
T
e
m
p
s

d
e

c
o
n
s
t
r
u
c
t
i
o
n

e
n

m
i
l
l
i
s
e
c
o
n
d
e
s

(
m
s
)
Calcul de lordre de complexit pour la construction de larbre
chantillon exprimental
quation thorique
FIG. 5.1

Evolution du temps de construction de larbre binaire
Parcours de larbre
Le parcours complet dun arbre binaire d epend directement du nombre de noeuds
associ es ` a celui-ci. Ainsi, pour un arbre complet, la complexit e est de lordre de t(n)
O(2
n
). Toutefois, lutilisation des heuristiques ` a m eme chaque noeud de larbre permet
de r eduire substantiellement celle-ci.
5.3 Recommandations
5.3.1 Optimisation eventuelles
Ce projet demeure encore la premi` ere phase dans limplantation des ltres au sein
du projet Lttv. Plusieurs travaux futurs pourraient porter sur lam elioration et loptimi-
sation des ltres.
CHAPITRE 5. DISCUSSION 36
Larbre binaire
Larbre binaire construit par le module de ltre noyau est un arbre dont le ni-
veau d epend indirectement du nombre dexpressions simples. En effet, il est difcile
d evaluer ` a sa construction le niveau quempruntera larbre de ltrage, cela d u aux
multiples sous-arbres qui se m eleront ` a la structure nale. Par ailleurs, larbre binaire
de ltrage nest pas un arbre complet, ni parfait[7] ni ne pourra eventuellement etre
transform e comme tel.
Par ailleurs, il serait toutefois possible de proc eder ` a une optimisation post-construction
de larbre pour equilibrer les expressions et sous-arbres en d eplacant les expressions fa-
vorisant un elagage des branches au d ebut du parcours.
De m eme, les expressions NON font place ` a une optimisation possible. En effet,
il est possible de simplier une expression simple ou sous-expression pr ec ed e dun
op erateur logique NON. Ainsi, en appliquant la loi de Murphy, il serait possible de
simplier lexpression f (x) =!(A(x) <a&B(x) = b) par f

(x) = A(x) a|B(x) = b. Il


sagit dune optimisation dun noeud dans larbre de ltrage.
Module graphique
Comme toujours pour une interface graphique, de nombreuses am eliorations peuvent
etre amen ees pour la rendre plus facile dutilisation. Dans le cadre de ce projet, une in-
terface sommaire a pu etre d evelopp ee et permet ` a lusager de sp ecier ` a laide de
bote de choix les diff erentes options de ltrage quil d esire utiliser. Cette interface est
simple de compr ehension et dutilisation et permet de produire des expressions de l-
trage complexes.
Toutefois, il est possible daller toujours plus loin dans l elaboration dexpressions
CHAPITRE 5. DISCUSSION 37
de ltrage. Ainsi, il serait possible de d evelopper une interface permettant ` a lusager de
sp ecier ` a m eme un arbre binaire graphique les options de ltrage quil d esire utiliser.
Sauvegarde des donn ees
Par la suite, il pourrait aussi etre int eressant de d evelopper un syst` eme de sauve-
garde des expressions de ltrage utilis ees dans linterface graphique et dans le module
textuel. En effet, le ltrage de traces peut parfois devenir complexe avec certaines sub-
tilit es quil deviendra ereintant de r einscrire ` a chaque test.
Ainsi, la sauvegarde de lexpression pourrait prendre une structure beaucoup plus
modulaire quune simple chane de caract` eres. Pour ce faire, une structure XML devien-
dra int eressante pour conserver la structure intrins` eque de larbre binaire. Lexemple
suivant d emontre un exemple dutilisation possible dune telle structure pour lexpres-
sion state.pid >0|(event.time >100.00&event.time <900.00)
<?xml version="1.0"?>
<FILTER>
<OR>
<LEFT>state.pid>0</LEFT>
<RIGHT>
<AND>
<LEFT>event.time>100.00</LEFT>
<RIGHT>event.time<900.00</RIGHT>
</AND>
</RIGHT>
</OR>
</FILTER>
Ainsi, lutilisation dune telle structure am eliorerait les performances de construc-
tion de larbre, car elle r ef` ere directement ` a celui-ci.
Chapitre 6
Glossaire
Filtre
Suivant sa d enition intrins` eque, un ltre a pour fonction de conserver le bon grain,
tout en emp echant le mauvais grain de passer. Implant e sous Lttv, le ltre recevra en
entr ee des ev enements et traces du programme et devra d ecider, selon lexpression de
ltrage, sil laisse passer ou non l el ement en cours danalyse.
Expression simple
Une expression simple ou simple expression dans le programme constitue une com-
mande de ltrage ind ependante. Une expression simple r ef` ere ` a un el ement pr ecis de
Lttv pour lequel on sp ecie une valeur qui devra etre respect ee lors du ltrage de cet
el ement.
voir sections 2.4.2 et 3.1.4.
Expression
Une expression est un ensemble dune ou plusieurs expressions simples diff erentes
38
CHAPITRE 6. GLOSSAIRE 39
s epar ees entre elles par un op erateur logique. Lop erateur peut prendre la forme dun
et logique, dun ou logique ou dun ou exclusif. Un el ement sera en mesure de
passer un ltrage, si et seulement sil respecte la condition formul ee sous forme dex-
pression de ltrage.
voir sections 2.4.2 et 3.1.4.
Arbre de ltrage
Larbre de ltrage utilis e pour les besoins de Lttv est un arbre de recherche bi-
naire. Chaque noeud interm ediaire dans larbre correspond ` a un op erateur logique qui
effectue une liaison entre deux autres noeuds. Les feuilles de larbre, quant ` a elles,
repr esentent une expression simple dont l evaluation est effectu ee lors du parcours de
larbre.
voir sections 2.4.3, 3.1.5, 3.2.1 et 3.3.
Bibliographie
[1] Gilles Brassard & Paul Bratley. Fundamentals of Algorithmics. Algorithmique.
Prentice Hall, 1996.
[2] Michel Dagenais. Aspects algorithmiques du g enie informatique, notes de cours.
Algorithmique. 2004.
[3] H.M. Deitel & P.J. Deitel. Comment programmer en C++. Programmation. Pren-
tice Hall, 2001.
[4] http ://developer.gnome.org/doc/API/2.0/glib/index.html. GLib-2.0 API. Docu-
mentation. 2005.
[5] http ://developer.gnome.org/doc/API/2.0/gtk/index.html. GTK-2.0 API. Documen-
tation. 2005.
[6] http ://www.doxygen.org. Doxygen Manual. Documentation. 2005.
[7] Martine Bellache & Robert Lagani` ere. Algorithmes et programmation ` a objets.
Programmation. Presses Polytechnique, 1998.
40
Annexe A
Annexes
Les pages suivantes pr esenteront la documentation Doxygen sous format HTML
g en er e pour le pr esent projet. De plus, une version electronique de cette documentation
est fournie avec le rapport.
41