Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 105

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>Proc&eacute;dures d'&eacute;valuation de performances et interpr&eacute;tation des r&eacute;sultats</TITLE>
</HEAD>
<BODY>
<H1>2. <A NAME="s2"></A>Proc&eacute;dures d'&eacute;valuation de performances et interpr&eacute;tation des r&eacute;sultats</H1>
<P>
<A HREF="Benchmarking-HOWTO.html#toc2">Contenu de cette section</A></P>

<P></P>
<P>Quelques recommendations semi-&eacute;videntes :</P>
<P>
<OL>
<LI> Premi&egrave;rement et avant tout, <B>identifiez vos objectifs d'&eacute;valuation de
performances</B>. Qu'essayez vous exactement d'&eacute;valuer ? En quoi un
processus d'&eacute;valuation de performances va-t-il vous aider &agrave; prendre
une d&eacute;cision ult&eacute;rieure ? Combien de temps et quelles ressources
voulez-vous consacrer &agrave; cet effort ?</LI>
<LI> <B>Utilisez des outils standard</B>. Utilisez une version &agrave; jour
et stable du noyau, des versions standard et &agrave; jour de gcc et de la libc,
et un benchmark standard. En bref, utilisez le LBT (voir plus loin).</LI>
<LI> Donnez une <B>description compl&egrave;te</B> de votre configuration
mat&eacute;rielle (voir le formulaire de compte-rendu plus loin).</LI>
<LI> Essayez d'<B>isoler une variable unique</B>. L'&eacute;valuation de performances
comparative est plus informative que l'&eacute;valuation de performances
"absolue". <B>Je n'insisterai jamais assez l&agrave;-dessus</B>.</LI>
<LI> <B>V&eacute;rifiez vos r&eacute;sultats</B>. Faites tourner vos benchmarks plusieurs
fois et v&eacute;rifiez les variations des r&eacute;sultats obtenus, si variation
il y a. Des variations inexpliqu&eacute;es invalideront vos r&eacute;sultats.</LI>
<LI> Si vous pensez que votre effort d'&eacute;valuation de performances a produit
de l'information significative, <B>partagez-la</B> avec la communaut&eacute; Linux
de fa&ccedil;on <B>pr&eacute;cise</B> et <B>concise</B>.</LI>
<LI> <B>Oubliez les BogoMips</B> s'il vous plait. Je me promets d'impl&eacute;menter un jour
un ASIC (ndt : un acronyme pour Application Specific Integrated Circuit,
c'est un circuit int&eacute;gr&eacute; d&eacute;di&eacute; &agrave; une application donn&eacute;e) dans
lequel les BogoMips seront cabl&eacute;s. Et alors on verra ce qu'on verra !</LI>
</OL>
</P>
<P></P>
<H2>2.1 <A NAME="ss2.1"></A> Comprendre les choix en mati&egrave;re de benchmarks</H2>

<P></P>
<P></P>
<H3>Benchmarks synth&eacute;tiques vs. benchmarks applicatifs</H3>

<P></P>
<P>Avant de consacrer le moindre temps aux travaux d'&eacute;valuation
de performances, il importe de faire un choix de base entre benchmarks
synth&eacute;tiques et benchmarks applicatifs.</P>
<P>Les benchmarks synth&eacute;tiques sont sp&eacute;cifiquement con&ccedil;us pour
mesurer la performance des composants individuels d'un ordinateur,
d'habitude en poussant l'un desdits composants jusqu'&agrave; sa limite.
Un exemple de benchmark synth&eacute;tique c&eacute;lebre est la suite <B>Whetstone</B>,
initialement programm&eacute;e en 1972 par Harold Curnow en FORTRAN (ou
&eacute;tait-ce en ALGOL ?), et dont l'usage est toujours tr&egrave;s r&eacute;pandu
de nos jours. La suite Whetstone produira une mesure de la performance
d'une CPU en mati&egrave;re de calcul flottant.</P>
<P>La principale critique que l'on puisse faire aux benchmarks synth&eacute;tiques
est qu'ils ne repr&eacute;sentent pas la performance d'un ordinateur, en tant que
syst&egrave;me complexe, dans des conditions d'utilisation r&eacute;elles.
Prenons par exemple la suite Whetstone, dont la boucle principale est tr&egrave;s
courte, et qui donc peut ais&eacute;ment tenir dans le cache primaire d'une CPU,
cette suite maintient le pipeline de la FPU aliment&eacute; en permanence de
fa&ccedil;on &agrave; pousser celle-ci &agrave; sa vitesse maximale. On ne peut pas
vraiment critiquer la suite Whetstone si l'on se souvient qu'elle a &eacute;t&eacute;
programm&eacute;e il y a 25 ans (sa conception est m&ecirc;me plus ancienne que &ccedil;a !),
mais il nous faut nous assurer que nous interpr&eacute;tons ses r&eacute;sultats
avec prudence quand nous nous pr&eacute;occupons d'&eacute;valuer les performances
de micro-processeurs modernes.</P>
<P>Un autre aspect tr&egrave;s important qu'il nous faut avoir en t&ecirc;te &agrave; propos
des benchmarks synth&eacute;tiques est qu'id&eacute;alement, ils devraient pouvoir
nous dire quelque chose en ce qui concerne un aspect <B>sp&eacute;cifique</B> du
syst&egrave;me que l'on est en train de tester, et ce ind&eacute;pendamment des autres
aspects dudit sys&egrave;me : un benchmark synth&eacute;tique d'une carte D'E/S Ethernet
devrait produire les m&ecirc;mes r&eacute;sultats (ou des r&eacute;sultats comparables) que
ce soit sur un 386SX-16 avec 4 MB de RAM ou sur un Pentium 200 MMX avec 64 MB
de RAM. Si tel n'&eacute;tait pas le cas, le test mesurerait la performance
globale de l'association CPU/carte-m&egrave;re/bus/carte Ethernet/sous-syst&egrave;me
m&eacute;moire/DMA, ce qui n'est pas tr&egrave;s utile puisque la diff&eacute;rence au niveau
des CPUs aura un impact plus important que la diff&eacute;rence au niveau des
cartes Ethernet (ceci suppose bien s&ucirc;r que nous utilisions la m&ecirc;me
combinaison noyau/driver (pilote de p&eacute;riph&eacute;rique)). Dans le cas contraire
la diff&eacute;rence de performances pourrait &ecirc;tre encore plus grande) !</P>
<P>Enfin, une erreur fr&eacute;quemment commise est de calculer la moyenne de divers
benchmarks synth&eacute;tiques et de pr&eacute;tendre qu'une telle moyenne est une
bonne repr&eacute;sentation de la performance globale d'un syst&egrave;me donn&eacute; pour
une utilisation dans la vie r&eacute;elle.</P>
<P>Voici un commentaire sur les benchmarks FPU (cit&eacute; avec la permission du
site Web de Cyrix Corp.) :</P>
<P>
<BLOCKQUOTE>
<EM> "Une unit&eacute; de calcul flottant acc&eacute;l&egrave;re le logiciel
con&ccedil;u pour l'utilisation de l'arithm&eacute;tique flottante :
typiquement il s'agit de programmes de CAO, de tableurs,
de jeux en 3D et d'applications de conception. Cependant,
la plupart des applications PC populaires d'aujourd'hui
utilisent &agrave; la fois des instructions flottantes et
l'arithm&eacute;tique enti&egrave;re. C'est pourquoi Cyrix a choisi
de mettre l'accent sur le parall&eacute;lisme lors de la conception
du processeur 6x86 et ce dans le but d'acc&eacute;l&eacute;rer les
programmes qui entrem&ecirc;lent ces 2 types d'instructions. </EM>
</BLOCKQUOTE>

<BLOCKQUOTE>
<EM> Le mod&egrave;le de traitement des exceptions flottantes de
l'architecture x86 permet aux instructions enti&egrave;res
d'&ecirc;tre &eacute;mises et de se terminer pendant qu'une
instruction flottante est en cours d'ex&eacute;cution.
A l'oppos&eacute;, une seconde op&eacute;ration flottante ne
pourra pas &ecirc;tre ex&eacute;cut&eacute;e alors qu'une pr&eacute;cedente
instruction flottante est en cours d'ex&eacute;cution.
Pour supprimer cette limitation de performance cr&eacute;ee
par le mod&egrave;le de traitement des exceptions flottantes,
le 6x86, peut &eacute;mettre sp&eacute;culativement jusqu'&agrave; 4
instructions flottantes vers la FPU int&eacute;gr&eacute;e sur le
circuit. Par exemple, dans une s&eacute;quence de code
constitu&eacute;e de 2 instructions flottantes (FLTs) suivies
de 6 instructions enti&egrave;res (INTs), elles-m&ecirc;mes suivies
de 2 FLTs, le 6x86 peut &eacute;mettre toutes ces 10
instructions vers les unit&eacute;s d'ex&eacute;cution appropri&eacute;es
avant que l'ex&eacute;cution de la premi&egrave;re FLT ne se soit
termin&eacute;e. Si aucune de ces instructions ne provoque
d'exception (ce qui est typique), l'ex&eacute;cution continue,
les unit&eacute;s flottantes et enti&egrave;res terminant
l'ex&eacute;cution de ces instructions en parall&egrave;le.
Si l'une des FLTs g&eacute;n&egrave;re une exception (le cas
atypique), les possibilit&eacute;s d'ex&eacute;cution sp&eacute;culatives
du 6x86 permettent que l'&eacute;tat du processeur soit
restitu&eacute; de fa&ccedil;on &agrave; ce que celui-ci soit compatible
avec le mod&egrave;le de traitement des exceptions flottantes. </EM>
</BLOCKQUOTE>

<BLOCKQUOTE>
<EM> L'examen de code de benchmarks synth&eacute;tiques flottants
r&eacute;v&egrave;le que ceux-ci utilisent des s&eacute;quences d'instructions
purement flottantes que l'on ne trouve pas dans les
applications du monde r&eacute;el. Ce type de benchmarks
ne tire pas profit des possibilit&eacute;s d'ex&eacute;cution
sp&eacute;culative du processeur 6x86. Cyrix pense que les
benchmarks non-synth&eacute;tiques bas&eacute;s sur des applications
du monde r&eacute;el refl&egrave;tent mieux la performance que
les utilisateurs vont effectivement obtenir.
Les applications du monde r&eacute;el contiennent des
instructions enti&egrave;res et flottantes entrem&ecirc;l&eacute;es
et pour cette raison tireront un meilleur parti des
possibilit&eacute;s d'ex&eacute;cution sp&eacute;culative du 6x86." </EM>
</BLOCKQUOTE>
</P>
<P>La tendance r&eacute;cente en mati&egrave;re d'&eacute;valuation de performances consiste
donc &agrave; choisir des applications usuelles et &agrave; les utiliser pour mesurer
la performance d'ordinateurs en tant que syst&egrave;mes complexes. Par exemple
<B>SPEC</B>, l'entreprise &agrave; but non-lucratif qui a con&ccedil;u les c&eacute;l&egrave;bres suites
de benchmarks synth&eacute;tiques SPECINT et SPECFP, a lanc&eacute; un projet pour
d&eacute;velopper une nouvelle suite de benchmarks applicatifs. Mais, l&agrave; encore,
il est tr&egrave;s improbable qu'une telle suite de benchmarks commerciale comporte
du code Linux un jour.</P>
<P>En r&eacute;sum&eacute;, les benchmarks synth&eacute;tiques sont valables &agrave; condition d'avoir
compris leurs objectifs et leurs limites. Les benchmarks applicatifs refl&egrave;teront
mieux la performance d'un syst&egrave;me informatique, mais aucun d'entre eux n'est
disponible pour Linux.</P>
<P></P>
<H3>Benchmarks de haut-niveau vs. de bas-niveau</H3>

<P></P>
<P>Les benchmarks de bas-niveau ont pour ambition la mesure de la performance du
mat&eacute;riel : la fr&eacute;quence de l'horloge du processeur, les temps de cycle de la
DRAM (ndt : acronyme pour Dynamic Random Access Memory) et de la SRAM (ndt :
acronyme pour Static Random Access Memory) cache, temps d'acc&egrave;s moyen d'un
disque dur, temps d'acc&egrave;s piste &agrave; piste, etc...</P>
<P>Cette approche peut &ecirc;tre utile si vous avez achet&eacute; un syst&egrave;me et que vous
vous demandez &agrave; partir de quels composants il a &eacute;t&eacute; construit, bien qu'une
meilleure fa&ccedil;on de r&eacute;pondre &agrave; cette question soit d'ouvrir le bo&icirc;tier,
de dresser l'inventaire des composants que vous trouverez &agrave; l'int&eacute;rieur,
et d'obtenir les sp&eacute;cifications techniques pour chacun d'entre eux
(elles sont la plupart du temps disponibles sur le Web).</P>
<P>Une autre utilisation possible des benchmarks de bas-niveau consiste &agrave; s'en
servir pour v&eacute;rifier qu'un driver du noyau a &eacute;t&eacute; correctement configur&eacute;
pour un composant mat&eacute;riel donn&eacute; : si vous disposez des sp&eacute;cifications 
techniques de ce composant vous pourrez comparer les r&eacute;sultats d'un benchmark 
de bas-niveau aux valeurs th&eacute;oriques figurant dans les specs.</P>
<P>Les benchmarks de haut-niveau ont plut&ocirc;t pour objectif la mesure de la
performance de l'association mat&eacute;riel/driver/syst&egrave;me d'exploitation en ce
qui concerne un aspect sp&eacute;cifique d'un syst&egrave;me informatique (par exemple
la performance des entr&eacute;es-sorties), ou m&ecirc;me une association sp&eacute;cifique
mat&eacute;riel/driver/syst&egrave;me d'exploitation/application (par exemple un benchmark
Apache sur diff&eacute;rents ordinateurs).</P>
<P>Bien s&ucirc;r, tous les benchmarks de bas-niveau sont synth&eacute;tiques. Les benchmarks
de haut-niveau peuvent &ecirc;tre synth&eacute;tiques ou applicatifs.</P>
<P></P>

<H2>2.2 <A NAME="ss2.2"></A> Benchmarks standard disponibles pour Linux</H2>

<P></P>
<P>AMHA, un test simple que tout le monde peut effectuer &agrave; l'occasion d'une
mise &agrave; jour de la configuration de sa machine Linux est de lancer une
compilation du noyau avant et apr&egrave;s cette mise &agrave; jour mat&eacute;rielle/logicielle,
et de comparer les dur&eacute;es de compilation. Si tous les autres param&egrave;tres
sont les m&ecirc;mes, alors ce test est valable en tant que mesure de la performance
en mati&egrave;re de compilation, et l'on peut affirmer en toute confiance que :</P>
<P>
<BLOCKQUOTE>
 "Le remplacement de A par B a conduit &agrave; une am&eacute;lioration
de x % de la dur&eacute;e de compilation du noyau Linux dans telles
et telles conditions".
</BLOCKQUOTE>
</P>
<P>Ni plus, ni moins !</P>
<P>Parce que la compilation du noyau est une t&acirc;che tr&egrave;s courante sous Linux,
et parce qu'elle met en oeuvre la plupart des fonctionnalit&eacute;s impliqu&eacute;es
dans les benchmarks usuels (sauf le calcul flottant), elle constitue un test
<B>isol&eacute;</B> plut&ocirc;t bon. Cependant, dans la majeure partie des cas, les
r&eacute;sultats de ce test ne peuvent pas &ecirc;tre reproduits par d'autres utilisateurs
de Linux &agrave; cause des diff&eacute;rences de configurations mat&eacute;rielles/logicielles.
Ce test ne constitue donc en aucun cas une m&eacute;trique permettant de comparer
des syst&egrave;mes dissemblables (&agrave; moins que nous ne nous mettions tous
d'accord sur la compilation d'un noyau standard - voir plus loin).</P>
<P>Malheureusement, il n'y a pas d'outils d'&eacute;valuation de performances ciblant
sp&eacute;cifiquement Linux, sauf peut-&ecirc;tre les Byte Linux Benchmarks. Ceux-ci
sont une version l&eacute;gerement modifi&eacute;e des Byte Unix Benchmarks qui datent
de 1991 (modifications Linux par Jon Tombs, auteurs originels : Ben Smith, Rick
Grehan et Tom Yager).</P>
<P>Il existe un 
<A HREF="http://www.silkroad.com/bass/linux/bm.html">site Web</A>
 central pour les Byte Linux Benchmarks.</P>
<P>Une version am&eacute;lior&eacute;e et mise &agrave; jour des Byte Unix Benchmarks a &eacute;t&eacute;
synth&eacute;tis&eacute;e par David C. Niemi. Elle s'appelle UnixBench 4.01 pour &eacute;viter
une confusion possible avec des versions ant&eacute;rieures. Voici ce que David a
&eacute;crit au sujet de ses modifications :</P>
<P>
<BLOCKQUOTE>
 "Les BYTE Unix benchmarks originels et l&eacute;gerement modifi&eacute;s
sont nases &agrave; bien des &eacute;gards ce qui fait d'eux un
indicateur inhabituellement non-fiable de la performance d'un
syst&egrave;me. J'ai d&eacute;lib&eacute;r&eacute;ment fait en sorte que
mes indices de performance soient tr&egrave;s diff&eacute;rents pour
&eacute;viter la confusion avec les vieux benchmarks."
</BLOCKQUOTE>
</P>
<P>David a mis en place une liste majordomo de diffusion par courrier
&eacute;lectronique pour les discussions relatives &agrave; l'&eacute;valuation de
performances sous Linux et sous les syst&egrave;mes d'exploitation concurrents.
Vous pouvez vous joindre &agrave; ces discussions en envoyant un e-mail dont
le corps contiendra "subscribe bench" &agrave; l'adresse
<A HREF="mailto:majordomo@wauug.erols.com">majordomo@wauug.erols.com</A>
.
Les groupe des utilisateurs de la r&eacute;gion de Washington est aussi en train de
mettre en place un 
<A HREF="http://wauug.erols.com/bench ">site Web</A>

concernant les benchmarks sous Linux.</P>
<P>R&eacute;cemment, Uwe F. Mayer, 
<A HREF="mailto:mayer@math.vanderbilt.edu">mayer@math.vanderbilt.edu</A>
 a &eacute;galement port&eacute; la suite Bytemark
de BYTE sous Linux. Il s'agit d'une suite moderne et compil&eacute;e tr&egrave;s
habilement par Rick Grehan du magazine BYTE. Bytemark teste les performances de la CPU, de la FPU et du
sous-syst&egrave;me m&eacute;moire des micro-ordinateurs modernes (ces benchmarks
sont strictement orient&eacute;s vers la performance du processeur, les E/S ou
la performance globale du syst&egrave;me ne sont pas pris en compte).</P>
<P>Uwe a aussi mis en place un
<A HREF="http://math.vanderbilt.edu:80/~mayer/linux/bmark.html">site Web</A>
, site o&ugrave; l'on peut acc&eacute;der &agrave; une base de donn&eacute;es contenant
les r&eacute;sultats de sa version des benchmarks BYTEmark pour Linux.</P>
<P>Si vous &ecirc;tes &agrave; la recherche de benchmarks synth&eacute;tiques pour Linux,
vous remarquerez assez vite que sunsite.unc.edu ne propose que peu d'outils
d'&eacute;valuation de performances. Pour mesurer les performances relatives de
serveurs X, la suite xbench-0.2 de Claus Gittinger est disponible sur
sunsite.unc.edu, ftp.x.org et d'autres sites (ndt : notamment ftp.lip6.fr qui
est l'un des mirroirs de sunsite). Dans son immense sagesse, Xfree86.org refuse
de promouvoir ou de recommender le moindre benchmark.</P>
<P>
<A HREF="http://www.goof.com/xbench/">XFree86-benchmarks Survey</A>

est un site Web comprenant une base de donn&eacute;es de r&eacute;sultats relatifs &agrave; x-bench.</P>
<P>En ce qui concerne les E/S purement disque, l'utilitaire hdparm (qui fait
partie de la plupart des distributions, mais est aussi disponible sur
sunsite.unc.edu) permet de mesurer les taux de transfert gr&acirc;ce aux options
-t et -T.</P>
<P>Il existe plein d'autres outils disponibles librement (sous license GPL) sur
Internet pour tester divers aspects de la performance de votre machine Linux.</P>
<P></P>

<H2>2.3 <A NAME="ss2.3"></A> Liens et r&eacute;f&eacute;rences</H2>

<P></P>
<P>La FAQ du newsgroup comp.benchmarks par Dave Sill est la r&eacute;f&eacute;rence standard
en mati&egrave;re d'&eacute;valuation de performances. Elle n'est pas particuli&egrave;rement
orient&eacute;e Linux, mais elle n'en reste pas moins une lecture recommend&eacute;e
pour tous ceux qui font preuve d'un minimum de s&eacute;rieux envers le sujet.
Elle est disponible sur nombre de sites FTP et de sites Web et recense <B>56
benchmarks diff&eacute;rents</B> avec des liens vers des sites FTP permettant de les
t&eacute;l&eacute;charger. Cependant, certains des benchmarks recens&eacute;s sont des
produits commerciaux.</P>
<P>Je n'entrerai pas dans la description d&eacute;taill&eacute;e des benchmarks mentionn&eacute;s
dans la FAQ de comp.benchmarks, mais il y a au moins une suite de bas-niveau
au sujet de laquelle j'aimerai faire quelques commentaires : la
<A HREF="http://reality.sgi.com/lm/lmbench/lmbench.html">suite lmbench</A>
 de Larry McVoy. Je cite David C. Niemi :</P>
<P>
<BLOCKQUOTE>
<EM> "Linus et David Miller s'en servent beaucoup parce qu'elle
permet des mesures de bas-niveau utiles et peut aussi
quantifier la bande passante et la latence d'un r&eacute;seau
si vous avez deux machines &agrave; votre disposition pour le
faire tourner. Mais lmbench n'essaie pas de produire un
indice de performance global..."</EM>
</BLOCKQUOTE>
</P>
<P>Un 
<A HREF="ftp://ftp.nosc.mil/pub/aburto">site FTP</A>

assez complet en mati&egrave;re de benchmarks disponibles <B>librement</B>
a &eacute;t&eacute; mis en place par Alfred Aburto. La suite Whetstone utilis&eacute;e dans
le LBT est disponible sur ce site.</P>
<P>Une <B>FAQ multi-fichier par Eugene Miya</B> est &eacute;galement post&eacute;e sur
comp.benchmarks; c'est une excellente r&eacute;f&eacute;rence.</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="Benchmarking-HOWTO-3.html">suivant</A>,
Chapitre <A HREF="Benchmarking-HOWTO-1.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Benchmarking-HOWTO.html#toc2">ce chapitre</A>,
 <A HREF="Benchmarking-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="Benchmarking-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>