Unified Kernel/User-Space Efficient Linux Tracing Architecture

RESUME De nos jours, il n'est pas inhabituel de voir de grands centres de donnees regroupant des centaines de serveurs deployant de grosses applications, des systemes d'exploitation heterogenes et differentes technologie de virtualisation. Implanter du tracage dans ce genre d'environnement peut s'averer utile pour la surveillance et le debogage de problemes de production. Avec les derniere architecture de tracage developpe, il peut etre difficile d'atteindre un tel objectif dans un environnement multi-utilisateur et egalement traiter les questions de securite. Dans cette recherche, nous proposons une nouvelle architecture de tracage unifiee combinant l'espace noyau et utilisateur visant a repondre aux contraintes de production en termes de securite et de performance. Avec le traceur en espace utilisateur, le nombre de sources de donnees augmentent, ou non seulement le noyau peut etre tracee mais plusieurs applications en meme temps. Cette nouvelle architecture presente un demon de session qui devient une nouvelle composante de tracage agissant comme un point de rendez-vous pour toutes les interactions avec les traceurs. Ce demon agit comme un registre de sessions de tracage pour les utilisateurs abstrayant les traceurs a des domaines. Nous proposer un ensemble de structure de donnees sans verrou et des algorithmes utilises pour construire la base de registre rendant cette composante tres performante. Cela a permis la creation du projet lttng-tools, basee sur les traceurs de LTTng 2.0,qui met en oeuvre l'architecture proposee. Nous avons developpe plusieurs algorithmes pour gerer et fournir un systeme multi-session et multi-utilisateur tout en gardan une empreinte memoire et CPU basse sur la machine cible. Avec l'abilite du traceur de l'espace utilisateur de s'enregistrer au demarrage au demon de session, de nouvelles fonctionnalites sont disponibles comme lister des applications tracable et de permettre de tracer des evenements disponibles seulement au demarrage de l'application. Nous avons demontrer l'exactitude de notre modele en utilisant le tracage noyau par ce nouveau composant pour analyser la performance de grosses applications de qui a ete inspire la conception des mecanismes internes de parallelisme. Enfin, cette etude presente les travaux futurs et les ameliorations possibles du modele propose et examine les defis a venir. ----------ABSTRACT Nowadays, it is not unusual to see large data centers regrouping hundreds of servers mixing large applications, heterogeneous kernels and different virtualization technology. Deploying tracing in these kinds of environments can prove to be useful for monitoring and debugging production problems. With today's tracing architecture, it can be difficult to achieve such goal in a multi-user environment while also dealing with security issues. In this research, we propose a new unied tracing architecture combining kernel and user space aimed at addressing production constraints in terms of security and low-instrusiveness for large scale deployment. With user space tracers, data sources increase where not only the kernel can be traced but multiple applications at the same time. This new architecture introduces a session daemon which becomes a new tracing component acting as a rendez-vous point for all interactions with the tracers. This daemon acts as a tracing registry providing tracing sessions to users, abstracting tracers to domains. We propose a set of lockless data structures and algorithms used to build the registry and making this component very efficient. This brought to life the lttng-tools project, based on the LTTng 2.0 tracers, which implements the proposed architecture. We have developed several algorithms to handle and provide a multi-session and multi-user tracing environment with a low memory and CPU footprint on the target machine. With the user space tracer ability to register at startup to the session daemon, a new set of features are available, from listing traceable applications to enabling events before registration, allowing recording of very early events during the boostrap process of the program. We have demonstrated the usability of our model by using kernel tracing through this new component to analyze the performance of large applications, which inspired us to design internal multithreaded mechanisms. Finally, this study presents future work and possible improvements to the proposed model and discusses the next challenges.