Avant d'utiliser DTrace, il faut que le périphérique DTrace existe. Pour charger le périphérique, exécutez la commande suivante:
#
kldload dtraceall
Le système devrait maintenant supporter DTrace. Pour afficher toutes les sondes, l'administrateur peut maintenant executer la commande:
#
dtrace -l | more
Toutes les données sortantes de cette commande sont
passées à l'utilitaire more
,
pour empêcher qu'elles saturent l'écran. A ce
niveau, DTrace peut être considéré comme
fonctionnel. On est maintenant prêt à passer en
revue l'ensemble des outils disponibles.
La boîte à outils est une collection de scripts prêts à fonctionner avec DTrace pour rassembler des informations systèmes. Il y a des scripts pour vérifier les fichiers ouvertes, la mémoire, l'usage du CPU et beaucoup plus. Il faut extraire les scripts avec la commande suivante:
#
gunzip -c DTracetoolkit* | tar xvf -
Aller dans ce répértoire en utilisant
cd
et changer les permissions de tous les
fichiers, les fichiers avec les noms en miniscules, à
755
.
Chacun de ces scripts devra avoir son contenu
modifié. Ceux qui font référence à
/usr/bin/ksh
devront pointer sur
/usr/local/bin/ksh
, les autres qui
utilisent /usr/bin/sh
devront être
modifiés pour qu'ils utilisent
/bin/sh
, et finalement ceux qui utilisent
/usr/bin/perl
, devront pointer sur
/usr/local/bin/perl
.
A ce point il est prudent de rappeler au lecteur que le support de DTrace sous FreeBSD n'est pas complet et est encore expérimental. Un bon nombre de ces scripts ne fonctionneront pas, soit parce qu'ils sont trop spécifiques à Solaris™, soit parce qu'ils utilisent des sondes qui ne sont pas encore supportées.
Au moment de l'écriture de ces lignes, seuls deux des
scripts de la boîte à outils DTrace sont
totalement supportés sous FreeBSD: les outils
hotkernel
et
procsystime
. Ce sont ces deux outils que
nous détaillerons dans la suite de cette section.
L'outil hotkernel
est censé
identifier quel fonction utilise le plus de temps noyau.
Fonctionnant normalement, il affichera une liste comparable
à la suivante:
#
./hotkernel
Sampling... Hit Ctrl-C to end.L'administrateur système doit utiliser la combinaison de touches Ctrl+C pour arrêter le processus. Le script affichera une liste de fonctions du noyau et des informations de temps, et les triera dans l'ordre croissant du temps consommé:
Ce script fonctionnera aussi avec des modules de noyau.
Pour utiliser ce fonction, exécutez le script avec
l'option -m
:
#
./hotkernel -m
Sampling... Hit Ctrl-C to end.
^C
MODULE COUNT PCNT
0xc107882e 1 0.0%
0xc10e6aa4 1 0.0%
0xc1076983 1 0.0%
0xc109708a 1 0.0%
0xc1075a5d 1 0.0%
0xc1077325 1 0.0%
0xc108a245 1 0.0%
0xc107730d 1 0.0%
0xc1097063 2 0.0%
0xc108a253 73 0.0%
kernel 874 0.4%
0xc10981a5 213781 99.6%Le script procsystime
capture et
affiche le temps consommé en appels système pour
un PID ou un processus donné. Dans
l'exemple suivant, un nouvel exemplaire de
/bin/csh
a été lancé.
L'outil procsystime
a été
exécuté et laissé en attente pendant que
quelques commandes été tapées sur les
autres incarnations de csh
. Voici le
résultat de ce test:
#
./procsystime -n csh
Tracing... Hit Ctrl-C to end...
^C
Elapsed Times for processes csh,
SYSCALL TIME (ns)
getpid 6131
sigreturn 8121
close 19127
fcntl 19959
dup 26955
setpgid 28070
stat 31899
setitimer 40938
wait4 62717
sigaction 67372
sigprocmask 119091
gettimeofday 183710
write 263242
execve 492547
ioctl 770073
vfork 3258923
sigsuspend 6985124
read 3988049784Comme indiqué, l'appel système
read()
semble prendre le plus de temps en
nanosecondes, alors que l'appel système
getpid()
prend très peu de
temps.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Pour toutes questions à propos de FreeBSD, lisez la
documentation avant de contacter
<questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez
<doc@FreeBSD.org>.