Add new translated chapter (not hooked to the build yet).
Based on a submission from: Isabell Long <isabell121@gmail.com>
This commit is contained in:
parent
584d246236
commit
ab5e19b487
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=37368
2 changed files with 456 additions and 0 deletions
fr_FR.ISO8859-1/books/handbook/dtrace
15
fr_FR.ISO8859-1/books/handbook/dtrace/Makefile
Normal file
15
fr_FR.ISO8859-1/books/handbook/dtrace/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
#
|
||||
# Build the Handbook with just the content from this chapter.
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
CHAPTERS= dtrace/chapter.sgml
|
||||
|
||||
VPATH= ..
|
||||
|
||||
MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX}
|
||||
|
||||
DOC_PREFIX?= ${.CURDIR}/../../../..
|
||||
|
||||
.include "../Makefile"
|
441
fr_FR.ISO8859-1/books/handbook/dtrace/chapter.sgml
Normal file
441
fr_FR.ISO8859-1/books/handbook/dtrace/chapter.sgml
Normal file
|
@ -0,0 +1,441 @@
|
|||
<!--
|
||||
Recently I suggested to myself that this should become a profiling
|
||||
and debugging chapter, which covers things like ktrace(1) and
|
||||
using other debugging (like -x in shell scripts). But then I
|
||||
realized that, over time and while DTrace becomes better supported,
|
||||
that might make this chapter too large.
|
||||
-->
|
||||
|
||||
<!--
|
||||
The FreeBSD Documentation Project
|
||||
The FreeBSD French Documentation Project
|
||||
|
||||
$FreeBSD$
|
||||
Original revision: 1.8
|
||||
-->
|
||||
|
||||
<chapter id="dtrace">
|
||||
<chapterinfo>
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Tom</firstname>
|
||||
<surname>Rhodes</surname>
|
||||
<contrib>Ecrit par </contrib>
|
||||
</author>
|
||||
</authorgroup>
|
||||
</chapterinfo>
|
||||
|
||||
<title>&dtrace;</title>
|
||||
&trans.a.long;
|
||||
|
||||
<sect1 id="dtrace-synopsis">
|
||||
<title>Synopsis</title>
|
||||
|
||||
<indexterm><primary>&dtrace;</primary></indexterm>
|
||||
<indexterm>
|
||||
<primary>support &dtrace;</primary>
|
||||
<see>&dtrace;</see>
|
||||
</indexterm>
|
||||
|
||||
<para>&dtrace;, également désigné sous le nom
|
||||
de système de trace dynamique, a été
|
||||
développé par &sun; comme outil de localisation de
|
||||
problèmes de performance sur des systèmes de
|
||||
production et d'avant-production. Ce n'est, en aucune
|
||||
manière, un outil de débogage, mais un outil pour
|
||||
l'analyse système en temps réel pour localiser les
|
||||
problèmes de performance et autres.</para>
|
||||
|
||||
<para>&dtrace; est un outil de profilage remarquable, avec une
|
||||
impressionnante multitude de fonctions pour diagnostiquer des
|
||||
problèmes système. Il peut également
|
||||
être utilisé avec des scripts
|
||||
pré-écrits pour pouvoir profiter de ses
|
||||
capacités. Les utilisateurs peuvent écrire leurs
|
||||
propres utilitaires en employant le langage de &dtrace;, D, leur
|
||||
permettant ainsi de personnaliser leur profilage en fonction de
|
||||
leurs besoins.</para>
|
||||
|
||||
<para>Après la lecture de ce chapitre, vous
|
||||
connaîtrez:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Ce qu'est &dtrace; et quelles fonctionnalités il
|
||||
offre.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Les différences entre la version &dtrace; de
|
||||
&solaris; et celle fournie par &os;.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Comment activer et utiliser &dtrace; sur &os;.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Avant de lire ce chapitre, vous devrez:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Comprendre les fondements d'&unix; et de &os;
|
||||
(<xref linkend="basics">).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Etre familier avec la configuration/compilation du noyau
|
||||
(<xref linkend="kernelconfig">).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Avoir une certaine connaissance concernant la
|
||||
sécurité et ses liens avec &os; (<xref
|
||||
linkend="security">).</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Comprendre comment obtenir et recompiler les sources de
|
||||
&os; (<xref linkend="updating-upgrading">).</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<!--
|
||||
Temporary warning to avoid listing experimental versions
|
||||
and production versions of FreeBSD with this technology.
|
||||
-->
|
||||
<warning>
|
||||
<para>Cette fonction est considérée comme
|
||||
expérimentale. Quelques options peuvent être
|
||||
absentes et d'autres ne fonctionneront peut-être pas du
|
||||
tout. A terme, cette fonction sera prête pour une
|
||||
utilisation en production, et cette documentation sera
|
||||
modifiée pour en tenir compte.</para>
|
||||
</warning>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="dtrace-implementation">
|
||||
<title>Des différences de mise en oeuvre</title>
|
||||
|
||||
<para>Bien que &dtrace; sous &os; soit très semblable
|
||||
à &dtrace; sous &solaris;, des différences
|
||||
existent et devraient être expliquées avant de
|
||||
continuer. La différence principale que les utilisateurs
|
||||
remarqueront est que sur &os;, &dtrace; doit être
|
||||
spécialement activé. Il y a des options de noyau
|
||||
et des modules qui doivent être activés pour que
|
||||
&dtrace; fonctionne correctement. Ces options seront
|
||||
expliquées plus tard.</para>
|
||||
|
||||
<para>Il existe une option de noyau, <literal>DDB_CTF</literal>,
|
||||
qui est employée pour activer la prise en charge du
|
||||
chargement des données <acronym>CTF</acronym> depuis les
|
||||
modules de noyau et du noyau lui-même.
|
||||
<acronym>CTF</acronym> est le format Compact C de &solaris;, qui
|
||||
encapsule une forme réduite d'information de
|
||||
débogage, semblable à <acronym>DWARF</acronym> et
|
||||
ses vénérables tables de symboles. Ces
|
||||
données <acronym>CTF</acronym> sont ajoutées aux
|
||||
fichiers binaires par les outils de compilation
|
||||
<command>ctfconvert</command> et <command>ctfmerge</command>.
|
||||
L'utilitaire <command>ctfconvert</command> analyse les sections
|
||||
de débogage <acronym>ELF</acronym>
|
||||
<acronym>DWARF</acronym> crées par le compilateur et
|
||||
<command>ctfmerge</command> fusionne les sections
|
||||
<acronym>ELF</acronym> <acronym>CTF</acronym> qui sont sous
|
||||
forme objet vers soit des fichiers executables, soit des
|
||||
bibliothèques partagées. Plus d'informations sur
|
||||
comment activer cela pour le noyau et &os; est à
|
||||
venir.</para>
|
||||
|
||||
<para>Quelques fournisseurs différents existent pour &os;
|
||||
par rapport à &solaris;. Le plus notable est le
|
||||
fournisseur <literal>dtmalloc</literal>, qui permet le
|
||||
traçage de la fonction <function>malloc()</function> par
|
||||
type dans le noyau &os;.</para>
|
||||
|
||||
<para>Seul l'utilisateur <username>root</username> peut utiliser
|
||||
&dtrace; sur &os;. Ceci est lié aux différences
|
||||
de sécurité, &solaris; dispose de quelques
|
||||
contrôles de sécurité de bas niveau qui
|
||||
n'existent pas encore sur &os;. Ainsi
|
||||
<devicename>/dev/dtrace/dtrace</devicename> est strictement
|
||||
limité uniquement à l'utilisateur
|
||||
<username>root</username>.</para>
|
||||
|
||||
<para>Pour terminer, le logiciel &dtrace; est sous la licence de
|
||||
&sun;, <acronym>CDDL</acronym>. La <literal>Common Development
|
||||
and Distribution License</literal> est disponibles sous &os;,
|
||||
voir le fichier
|
||||
<filename>/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE</filename>
|
||||
ou vous pouvez le consulter sur Internet à <ulink
|
||||
url="http://www.opensolaris.org/os/licensing"></ulink>.</para>
|
||||
|
||||
<para>Cette licence signifie qu'un noyau avec les options &dtrace;
|
||||
est toujours sous licence <acronym>BSD</acronym>; cependant, la
|
||||
licence <acronym>CDDL</acronym> est appliquée lorsque les
|
||||
modules sont distribués sous format binaire, ou quand les
|
||||
fichiers binaires sont chargés.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="dtrace-enable">
|
||||
<title>Activer la prise en charge de &dtrace;</title>
|
||||
|
||||
<para>Pour activer &dtrace;, il faut ajouter les lignes suivantes
|
||||
au fichier de configuration du noyau:</para>
|
||||
|
||||
<programlisting>options KDTRACE_HOOKS
|
||||
options DDB_CTF</programlisting>
|
||||
|
||||
<note>
|
||||
<para>Les utilisateurs de l'architecture AMD64 devraient ajouter
|
||||
la ligne suivante à leur fichier de configuration de
|
||||
noyau :</para>
|
||||
|
||||
<programlisting>options KDTRACE_FRAME</programlisting>
|
||||
|
||||
<para>Cette option active la fonction <acronym>FBT</acronym>.
|
||||
&dtrace; fonctionnera sans cette option, mais il y aura des
|
||||
restrictions sur le traçage des limites des
|
||||
fonctions.</para>
|
||||
</note>
|
||||
|
||||
<para>Les sources doivent être recompilées et
|
||||
installées avec les options <acronym>CTF</acronym>. Pour
|
||||
faire cela, recompiler les sources de &os; en utilisant:</para>
|
||||
|
||||
<!-- XXXTR: WITH_CTF has been reported to leave a user with a
|
||||
broken system when used with buildworld. Until this is
|
||||
fixed, comment out those parts. When uncommenting, kill
|
||||
the extra screen.
|
||||
-->
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
|
||||
<!-- &prompt.root; <userinput>make WITH_CTF=1 buildworld</userinput> -->
|
||||
&prompt.root; <userinput>make WITH_CTF=1 kernel</userinput></screen>
|
||||
<!-- &prompt.root; <userinput>make WITH_CTF=1 installworld</userinput>
|
||||
&prompt.root; <userinput>mergemaster -Ui</userinput></screen> -->
|
||||
|
||||
<para>Le système aura besoin d'être
|
||||
redémarré.</para>
|
||||
|
||||
<para>Après avoir redémarré et avoir
|
||||
laissé charger en mémoire le noyau, le support de
|
||||
l'interpréteur de commandes Korn devra être
|
||||
ajouté. Ceci est necessaire car la boîte à
|
||||
outils &dtrace; possède quelques utilitaires
|
||||
écrits en <command>ksh</command>. Il faut installer
|
||||
<filename role="package">shells/ksh93</filename>. Il est
|
||||
également possible de faire fonctionner ces outils avec
|
||||
<filename role="package">shells/pdksh</filename> ou <filename
|
||||
role="package">shells/mksh</filename>.</para>
|
||||
|
||||
<para>Finalement, récupérer la boîte à
|
||||
outils &dtrace; la plus récente. La version actuelle est
|
||||
disponible à l'adresse <ulink
|
||||
url="http://www.opensolaris.org/os/community/dtrace/"></ulink>.
|
||||
Un système d'installation est inclu dans l'archive;
|
||||
cependant, cette installation n'est pas obligatoire pour
|
||||
utiliser les outils fournis.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="dtrace-using">
|
||||
<title>Utiliser &dtrace;</title>
|
||||
|
||||
<para>Avant d'utiliser &dtrace;, il faut que le
|
||||
périphérique &dtrace; existe. Pour charger le
|
||||
périphérique, exécutez la commande
|
||||
suivante:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>kldload dtraceall</userinput></screen>
|
||||
|
||||
<para>Le système devrait maintenant supporter &dtrace;.
|
||||
Pour afficher toutes les sondes, l'administrateur peut
|
||||
maintenant executer la commande :</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>dtrace -l | more</userinput></screen>
|
||||
|
||||
<para>Toutes les données sortantes de cette commande sont
|
||||
passées à l'utilitaire <command>more</command>,
|
||||
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.</para>
|
||||
|
||||
<para>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 <acronym>CPU</acronym> et beaucoup plus. Il faut
|
||||
extraire les scripts avec la commande suivante :</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>gunzip -c DTracetoolkit* | tar xvf -</userinput></screen>
|
||||
|
||||
<para>Aller dans ce répértoire en utilisant
|
||||
<command>cd</command> et changer les permissions de tous les
|
||||
fichiers, les fichiers avec les noms en miniscules, à
|
||||
<literal>755</literal>.</para>
|
||||
|
||||
<para>Chacun de ces scripts devra avoir son contenu
|
||||
modifié. Ceux qui font référence à
|
||||
<filename>/usr/bin/ksh</filename> devront pointer sur
|
||||
<filename>/usr/local/bin/ksh</filename>, les autres qui
|
||||
utilisent <filename>/usr/bin/sh</filename> devront être
|
||||
modifiés pour qu'ils utilisent
|
||||
<filename>/bin/sh</filename>, et finalement ceux qui utilisent
|
||||
<filename>/usr/bin/perl</filename>, devront pointer sur
|
||||
<filename>/usr/local/bin/perl</filename>.</para>
|
||||
|
||||
<important>
|
||||
<para>A ce point il est prudent de rappeler au lecteur
|
||||
que le support de &dtrace; sous &os; <emphasis>n'est pas
|
||||
complet</emphasis> et est encore
|
||||
<emphasis>expérimental</emphasis>. 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.</para>
|
||||
</important>
|
||||
|
||||
<para>Au moment de l'écriture de ces lignes, seuls deux des
|
||||
scripts de la boîte à outils &dtrace; sont
|
||||
totalement supportés sous &os;: les outils
|
||||
<filename>hotkernel</filename> et
|
||||
<filename>procsystime</filename>. Ce sont ces deux outils que
|
||||
nous détaillerons dans la suite de cette section.</para>
|
||||
|
||||
<para>L'outil <filename>hotkernel</filename> est censé
|
||||
identifier quel fonction utilise le plus de temps noyau.
|
||||
Fonctionnant normalement, il affichera une liste comparable
|
||||
à la suivante:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>./hotkernel</userinput>
|
||||
Sampling... Hit Ctrl-C to end.</screen>
|
||||
|
||||
<para>L'administrateur système doit utiliser la combinaison
|
||||
de touches <keycombo
|
||||
action="simul"><keycap>Ctrl</keycap><keycap>C</keycap>
|
||||
</keycombo> 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é:</para>
|
||||
|
||||
<screen>kernel`_thread_lock_flags 2 0.0%
|
||||
0xc1097063 2 0.0%
|
||||
kernel`sched_userret 2 0.0%
|
||||
kernel`kern_select 2 0.0%
|
||||
kernel`generic_copyin 3 0.0%
|
||||
kernel`_mtx_assert 3 0.0%
|
||||
kernel`vm_fault 3 0.0%
|
||||
kernel`sopoll_generic 3 0.0%
|
||||
kernel`fixup_filename 4 0.0%
|
||||
kernel`_isitmyx 4 0.0%
|
||||
kernel`find_instance 4 0.0%
|
||||
kernel`_mtx_unlock_flags 5 0.0%
|
||||
kernel`syscall 5 0.0%
|
||||
kernel`DELAY 5 0.0%
|
||||
0xc108a253 6 0.0%
|
||||
kernel`witness_lock 7 0.0%
|
||||
kernel`read_aux_data_no_wait 7 0.0%
|
||||
kernel`Xint0x80_syscall 7 0.0%
|
||||
kernel`witness_checkorder 7 0.0%
|
||||
kernel`sse2_pagezero 8 0.0%
|
||||
kernel`strncmp 9 0.0%
|
||||
kernel`spinlock_exit 10 0.0%
|
||||
kernel`_mtx_lock_flags 11 0.0%
|
||||
kernel`witness_unlock 15 0.0%
|
||||
kernel`sched_idletd 137 0.3%
|
||||
0xc10981a5 42139 99.3%</screen>
|
||||
|
||||
<!-- XXXTR: I attempted to use objdump and nm on /boot/kernel/kernel
|
||||
to find 0xc10981a5, but to no avail. It would be nice to know
|
||||
how we should look that up. -->
|
||||
|
||||
<para>Ce script fonctionnera aussi avec des modules de noyau.
|
||||
Pour utiliser ce fonction, exécutez le script avec
|
||||
l'option <option>-m</option>:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>./hotkernel -m</userinput>
|
||||
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%</screen>
|
||||
|
||||
<!-- XXXTR: I was unable to match these up with output from
|
||||
kldstat and kldstat -v and grep. Maybe I'm missing something
|
||||
seriously obvious. It is 5AM btw. -->
|
||||
|
||||
<para>Le script <filename>procsystime</filename> capture et
|
||||
affiche le temps consommé en appels système pour
|
||||
un <acronym>PID</acronym> ou un processus donné. Dans
|
||||
l'exemple suivant, un nouvel exemplaire de
|
||||
<filename>/bin/csh</filename> a été lancé.
|
||||
L'outil <filename>procsystime</filename> a été
|
||||
exécuté et laissé en attente pendant que
|
||||
quelques commandes été tapées sur les
|
||||
autres incarnations de <command>csh</command>. Voici le
|
||||
résultat de ce test:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>./procsystime -n csh</userinput>
|
||||
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 3988049784</screen>
|
||||
|
||||
<para>Comme indiqué, l'appel système
|
||||
<function>read()</function> semble prendre le plus de temps en
|
||||
nanosecondes, alors que l'appel système
|
||||
<function>getpid()</function> prend très peu de
|
||||
temps.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="dtrace-language">
|
||||
<title>Le langage D</title>
|
||||
|
||||
<para>La boîte à outils &dtrace; comprend plusieurs
|
||||
scripts écrits dans le langage spécifique de
|
||||
&dtrace;. Ce langage est appelé le <quote>langage
|
||||
D</quote> dans la documentation de &sun;, et est très
|
||||
proche du C++. Une étude en profondeur de ce langage
|
||||
sort du cadre de ce document. Il est abordé de
|
||||
manière très détaillée à
|
||||
l'adresse <ulink
|
||||
url="http://wikis.sun.com/display/DTrace/Documentation"></ulink>.</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<!-- XXXTR: Should probably put links and resources here. I'm
|
||||
nervous about this chapter as it may require a partial
|
||||
re-write and large modification once DTrace is complete, but
|
||||
at least we can get everyone started ... -->
|
Loading…
Reference in a new issue