EuroBSDCon 2011 – Day 2 – DTrace
2ème jour de l’euroBSDCon 2011 … Au programme : DTrace
DTrace
La présentation est faite par Tod McQuillin, fondateur d’un des plus gros FAI aux états-unisn Telerama. Tod travaille avec BSD depuis 1988, FreeBSD depuis 1993, et Solaris depuis 1995. Outre ses compétences “système”, il maîtrise parfaitement la programmation Perl, C et SQL. La présentation était orientée “FreeBSD”
Les pré-requis
Quelques jours avant la convention, Tod nous avait demandé de construire un noyau FreeBSD intégrant les modules DTrace, ainsi que de recompiler le système avec des options précises, de manière à pouvoir tester en direct les exemples montrés en cours et faire les quelques exercices proposés. Une sérieuse connaissance des composants et fonctionnalités du noyau FreeBSD était bien sûr fort utile.
Les points abordés
Au cours de la présentation, nous avons abordés les points suivants :
- Introduction à DTrace : histoire, licence, disponibilité, etc ..
- Structure de DTrace : les notions de providers, probes et consumers, la syntaxe, etc
- Le langage D : écriture de script, etc
- Exercices
Une petite conclusion
J’aurais personnellement eu du mal à me mettre à DTrace, qui fait beaucoup parler depuis sa conception par SUN. Ce cours (plutôt une introduction tellement DTrace semble puissant !) a permis de faire le premier pas : DTrace est totalement fantastique !
Il s’agit donc d’un outil de supervision système, qui permet de surveiller en direct les différents processus tournant sur un système FreeBSD : les appels systèmes (syscall), les I/O, etc .. le code exécuté par un process OU/ET par le noyau ! est modifié en direct, dynamiquement, à l’exécution pour permettre de tracer certains comportements. C’est totalement bluffant. A titre d’exemple un peu inutile, les exercices proposés m’ont permis de remarquer que ma config CONKY entraînait un nombre important d’appels syscall en échec. Une petite correction, et c’est déjà moins d’erreurs
Un des exercices étaient par exemple de donner pour tous les appels syscall en échec, le nom du programme ayant fait l’appel, le nom du syscall, et le numéro d’erreur. Impossible à faire sans DTrace. DTrace permet de faire ce type de traçage, même sur un système en production !!
Je pense faire rapidement un petit HOW-TO simple avec quelques exemples pour se lancer dans DTrace. En voici déjà quelques-un sur le wiki de FreeBSD : http://wiki.freebsd.org/DTrace/Examples
Des ressources complémentaires
Le guide de chez solaris, indispensable
Le User Guide, toujours chez solaris
Le blog de Brendan Gregg, auteur DU livre sur DTrace
PS : si vous souhaitez les slides du cours en PDF, contactez moi via mon site.