Sophie

Sophie

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

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

<HTML>
<HEAD>
<TITLE>Le Linux Benchmarking Toolkit (LBT)</TITLE>
</HEAD>
<BODY>
<H1>3. <A NAME="s3"></A>Le Linux Benchmarking Toolkit (LBT)</H1>
<P>
<A HREF="Benchmarking-HOWTO.html#toc3">Contenu de cette section</A></P>

<P></P>
<P>Je propose ici un ensemble d'outils pour l'&eacute;valuation de performances sous
Linux. C'est la version pr&eacute;liminaire d'un vaste environnement d'&eacute;valuation
de performances pour Linux, il est destin&eacute; &agrave; &ecirc;tre am&eacute;lior&eacute; et &agrave;
voir ses fonctionnalit&eacute;s &eacute;tendues. Prenez le pour ce qu'il vaut,
c'est-&agrave;-dire une proposition. Si vous pensez que cette suite de test n'est pas
valable, prenez la libert&eacute; de m'envoyer (ndt : &agrave; l'auteur et non au
traducteur, merci :-) vos critiques par e-mail et soyez s&ucirc;rs que je serai
heureux d'int&eacute;grer les changements que vous aurez sugg&eacute;r&eacute; dans la mesure
du possible. Avant d'entamer une pol&eacute;mique, lisez ce HOWTO et les documents
cit&eacute;s en r&eacute;f&eacute;rence : les critiques inform&eacute;s sont les bienvenus, les
critiques st&eacute;riles ne le sont pas.</P>
<P></P>
<H2>3.1 <A NAME="ss3.1"></A> Motivations</H2>

<P></P>
<P>Elles sont dict&eacute;es par le bon sens, tout simplement :</P>
<P>
<OL>
<LI> Cette suite ne doit pas n&eacute;cessiter plus d'une journ&eacute;e de dur&eacute;e
d'ex&eacute;cution. En mati&egrave;re de benchmarks comparatifs (diverses
ex&eacute;cutions), personne ne veut passer des jours &agrave; essayer de trouver
la configuration mat&eacute;rielle le plus rapide pour un syst&egrave;me donn&eacute;. Id&eacute;alement,
l'ensemble de la suite devrait pouvoir tourner en 15 minutes sur une
machine moyenne.</LI>
<LI> Tout le code source doit &ecirc;tre disponible librement sur le Net, pour
des raisons &eacute;videntes.</LI>
<LI> Les benchmarks devraient fournir des chiffres simples et refl&eacute;tant la
performance mesur&eacute;e.</LI>
<LI> Il devait y avoir un m&eacute;lange de benchmarks synth&eacute;tiques et de
benchmarks applicatifs.</LI>
<LI> Chacun des benchmarks <B>synth&eacute;tiques</B> devrait pousser un
sous-syst&egrave;me particulier &agrave; ses limites.</LI>
<LI> Les r&eacute;sultats des benchmarks <B>synth&eacute;tiques</B> ne devraient
<B>pas</B> &ecirc;tre combin&eacute;s par le biais d'une moyenne afin d'en extraire un
facteur de m&eacute;rite global (cela va &agrave; l'encontre du principe fondateur des
benchmarks synth&eacute;tiques et conduit &agrave; une perte d'information consid&eacute;rable).</LI>
<LI> Les benchmarks applicatifs devraient &ecirc;tre repr&eacute;sentatifs de t&acirc;ches
couramment ex&eacute;cut&eacute;es sur des syst&egrave;mes Linux.</LI>
</OL>
</P>
<P></P>

<H2>3.2 <A NAME="ss3.2"></A> S&eacute;lection des benchmarks</H2>

<P></P>
<P>J'ai s&eacute;lectionn&eacute; 5 suites des benchmarks diff&eacute;rentes en &eacute;vitant autant
que possible les recouvrements dans les tests :</P>
<P>
<OL>
<LI> Compilation du noyau 2.0.0 (configuration par d&eacute;faut) avec gcc.</LI>
<LI> Whetstone version 10/03/97 (la version la plus r&eacute;cente de Roy Longbottom).</LI>
<LI> xbench-0.2 (avec les param&egrave;tres d'ex&eacute;cution rapide).</LI>
<LI> Les benchmarks UnixBench version 4.01 (r&eacute;sultats partiels).</LI>
<LI> Les benchmarks de la suite BYTEmark du magazine BYTE beta release 2
(r&eacute;sultats partiels).</LI>
</OL>
</P>
<P>Pour les tests 4 et 5, "(r&eacute;sultats partiels)" signifie qu'une partie seulement
des r&eacute;sultats produits est prise en compte.</P>
<P></P>

<H2>3.3 <A NAME="ss3.3"></A> Dur&eacute;e des tests</H2>

<P></P>
<P>
<OL>
<LI> Compilation du noyau 2.0.0 : 5 - 30 minutes, selon la performance
<B>r&eacute;elle</B> de votre machine.</LI>
<LI> Whetstone : 100 secondes.</LI>
<LI> Xbench-0.2 : &lt; 1 heure.</LI>
<LI> Les benchmarks d'UnixBench version 4.01 : environs 15 minutes.</LI>
<LI> Les benchmarks de la suite BYTEmark du magazine BYTE : environs 10 minutes.</LI>
</OL>
</P>
<P></P>

<H2>3.4 <A NAME="ss3.4"></A> Commentaires</H2>

<P></P>
<P></P>
<H3>Compilation du noyau 2.0.0</H3>

<P></P>
<P>
<UL>
<LI> <B>Quoi :</B> c'est le seul benchmark applicatif de la LBT.</LI>
<LI> Le code est largement disponible (c&agrave;d que j'ai finalement trouv&eacute; une
utilisation pour mes vieux CD-ROMs Linux).</LI>
<LI> La plupart des linuxiens recompilent leur noyau assez souvent, c'est donc
une mesure significative de la performance globale.</LI>
<LI> Le noyau est gros et gcc utilise une bonne partie de la m&eacute;moire (ndt :
surtout &agrave; l'&eacute;dition de liens) : ceci contribue &agrave; att&eacute;nuer le biais
induit par le cache L2 lorsque l'on se contente de passer de petits tests.</LI>
<LI> Les E/S vers le disque sont fr&eacute;quentes.</LI>
<LI> Proc&eacute;dure de test : trouvez une antique arborescence source de 2.0.0,
compilez la avec les options par d&eacute;faut (make config, appuyez sur Enter
autant de fois que n&eacute;c&eacute;ssaire). Le temps affich&eacute; doit correspondre
&agrave; la dur&eacute;e pass&eacute;e sur la compilation c&agrave;d apr&egrave;s que vous ayez
tap&eacute; make zImage (sans prendre en compte le make dep clean). Notez
que l'architecture cible par d&eacute;faut est i386, donc si vous compilez
sur une autre architecture, gcc devrait &ecirc;tre en mesure de cross-compiler
en utilisant i386 en tant qu'architecture cible.</LI>
<LI> <B>R&eacute;sultats :</B> la dur&eacute;e de compilation en minutes et secondes (s'il vous
plait, ne rapportez pas les fractions de secondes).</LI>
</UL>
</P>
<P></P>
<H3>La suite Whetstone</H3>

<P></P>
<P>
<UL>
<LI> <B>Quoi :</B> mesure la performance en calcul flottant pur &agrave; l'int&eacute;rieur
d'une courte (et dense) boucle. Le code source (en C) est assez lisible
et il est tr&egrave;s facile de voir quelles sont les op&eacute;rations flottantes
impliqu&eacute;es.</LI>
<LI> C'est le plus court des tests de la LBT :-).</LI>
<LI> C'est un "Vieux Classique" : des chiffres sont disponibles pour comparaison,
ses d&eacute;fauts et ses faiblesses sont bien connues.</LI>
<LI> Proc&eacute;dure de test : le code source le plus r&eacute;cent devrait &ecirc;tre
t&eacute;l&eacute;charg&eacute; depuis le site d'Aburto. Compilez le et ex&eacute;cutez le en
mode double pr&eacute;cision. Sp&eacute;cifiez gcc et -O2 en tant que pr&eacute;-processeur
et option du compilateur respectivement. D&eacute;finissez aussi la variable du
pr&eacute;-processur POSIX &agrave; 1 pour pr&eacute;ciser le type de machine.</LI>
<LI> <B>R&eacute;sultats :</B> un indice de performance en calcul flottant exprim&eacute; en MWIPS.</LI>
</UL>
</P>
<P></P>
<H3>Xbench-0.2</H3>

<P></P>
<P>
<UL>
<LI> <B>Quoi :</B> mesure la performance de serveurs X.</LI>
<LI> La mesure en xStones fournie par xbench est une moyenne pond&eacute;r&eacute;e de
quelques tests rapport&eacute;s aux performances obtenues sur une vieille station
Sun ne disposant que d'un display d'un seul bit de profondeur (ndt : en
clair, c'est du monochrome pur et dur). Mouais... on peut l&eacute;gitimement
se demander si xbench est v&eacute;ritablement ad&eacute;quat en tant que test
pour des serveurs X modernes. N&eacute;anmoins, c'est le meilleur outil que
j'ai trouv&eacute;.</LI>
<LI> Proc&eacute;dure de test : compilez avec -O2. On sp&eacute;cifiera aussi quelques
options pour une ex&eacute;cution courte : <CODE>./xbench -timegoal 3 >
results/name_of_your_linux_box.out</CODE>.
Pour g&eacute;n&eacute;rer l'indice xStones, il nous faudra encore lancer un script
awk; la fa&ccedil;on la plus simple de le faire &eacute;tant de taper
make summary.ms. Jetez un coup d'oeuil au fichier summary.ms : l'indice
xStone de votre syst&egrave;me est dans la derni&egrave;re colonne de la ligne
contenant le nom de votre machine -- nom que vous aurez sp&eacute;cifi&eacute;
pendant le test.</LI>
<LI> <B>R&eacute;sultats :</B> un indice de performances exprim&eacute; en xStones.</LI>
<LI> Note : ce test, en l'&eacute;tat, est d&eacute;pass&eacute;. Il devrait &ecirc;tre r&eacute;-&eacute;crit.</LI>
</UL>
</P>
<P></P>
<H3>UnixBench version 4.01</H3>

<P></P>
<P>
<UL>
<LI> <B>Quoi</B> : mesure la performance globale d'un syst&egrave;me UNIX. Ce test met en
oeuvre &eacute;vidence la performance des E/S fichier et de la gestion du
multi-t&acirc;ches par le noyau.</LI>
<LI> J'ai supprim&eacute; tous les r&eacute;sultats de tests arithm&eacute;tiques et je n'ai
conserv&eacute; que les tests orient&eacute;s syst&egrave;me.</LI>
<LI> Proc&eacute;dure de test : make avec -O2. Ex&eacute;cution avec <CODE>./Run -1</CODE>
(tournez chacun des tests une fois). Vous trouverez les r&eacute;sultats dans le
fichier ./results/report.
Calculez la moyenne g&eacute;om&eacute;trique des indices de EXECL THROUGHPUT,
FILECOPY 1, 2, 3, PIPE THROUGHPUT, PIPE-BASED CONTEXT SWITCHING, PROCESS
CREATION, SHELL SCRIPTS et SYSTEM CALL OVERHEAD.</LI>
<LI> <B>R&eacute;sultats :</B> un indice de performance du syst&egrave;me.</LI>
</UL>
</P>
<P>(ndt : la moyenne g&eacute;om&eacute;trique se d&eacute;finit comme la racine n-i&egrave;me
du produit des n termes consid&eacute;r&eacute;s)</P>
<P></P>
<H3>Les benchmarks Bytemark du magazine BYTE</H3>

<P></P>
<P>
<UL>
<LI> Quoi : fournit une bonne mesure de la performance CPU. Voici un extrait
de la documentation : <EM>"Ces benchmarks ont &eacute;t&eacute;s con&ccedil;u de fa&ccedil;on
&agrave; mettre en &eacute;vidence la limite sup&eacute;rieure de la CPU, de la FPU
et de l'architecture m&eacute;moire d'un syst&egrave;me. Ils ne peuvent mesurer
la performance du sous-syst&egrave;me graphique, des acc&egrave;s disque ou du
d&eacute;bit r&eacute;seau (ce sont l&agrave; le domaine d'un ensemble diff&eacute;rent
de benchmarks). C'est pourquoi, il est souhaitable que vous n'utilisiez
les r&eacute;sultats de ces tests qu'en tant qu'&eacute;l&eacute;ment d'appr&eacute;ciation
partielle, et non pas totale, lors de l'&eacute;valuation de la performance d'un
syst&egrave;me."</EM></LI>
<LI> J'ai supprim&eacute; tous les r&eacute;sultats de test FPU puisque la suite Whetstone
est tout aussi repr&eacute;sentative des performances &agrave; cet &eacute;gard.</LI>
<LI> J'ai d&eacute;compos&eacute; les tests entiers en deux groupes : ceux qui sont plus
repr&eacute;sentatifs de la performance cache m&eacute;moire/CPU, et ceux qui utilisent
l'arithm&eacute;tique enti&egrave;re de la CPU.</LI>
<LI> Proc&eacute;dure de test : make avec -O2. Ex&eacute;cutez le test avec ./nbench &gt;myresults.dat ou quelque chose d'approchant. Puis, &agrave; partir de
myresults.dat, calculez la moyenne g&eacute;om&eacute;trique des indices des tests
STRING SORT, ASSIGNMENT et BITFIELD. Ceci vous donnera l'<B>indice
m&eacute;moire</B>. Calculez  la moyenne g&eacute;om&eacute;trique des indices des tests NUMERIC
SORT, IDEA, HUFFMAN et FP EMULATION: c'est l'<B>indice entier</B>.</LI>
<LI> <B>R&eacute;sultats :</B> un indice m&eacute;moire et un indice entier calcul&eacute;s comme
expliqu&eacute; ci-dessus.</LI>
</UL>
</P>
<P></P>

<H2>3.5 <A NAME="ss3.5"></A> Am&eacute;liorations possibles</H2>

<P></P>
<P>La suite de benchmarks id&eacute;ale tournerait en quelques minutes, comprendrait
des benchmarks synth&eacute;tiques testant chaque sous-syst&egrave;me s&eacute;par&eacute;ment
et des benchmarks applicatifs fournissant des r&eacute;sultats pour diff&eacute;rentes
applications. Elle produirait aussi automatiquement un rapport complet et
&eacute;ventuellement l'enverrait par e-mail &agrave; une base de donn&eacute;es centrale
sur le Web.</P>
<P>La portabilit&eacute; n'est pas vraiment notre souci premier dans cette affaire.
Pourtant, une telle suite devrait tourner au moins sur toutes les versions
(&gt; 2.0.0) du noyau Linux, et ce dans toutes leurs d&eacute;clinaisons possibles
(i386, Alpha, Sparc...).</P>
<P>Si quelqu'un a la moindre id&eacute;e concernant l'&eacute;valuation de performances
r&eacute;seau au moyen d'un test &agrave; la fois simple, facile d'emploi, fiable, et
dont la mise en oeuvre prendrait moins de 30 minutes (configuration et
ex&eacute;cution), s'il vous plait contactez-moi.</P>
<P></P>

<H2>3.6 <A NAME="ss3.6"></A> Formulaire de rapport LBT</H2>

<P></P>
<P>Au-del&agrave; des tests, la proc&eacute;dure d'&eacute;valuation de performances n'aurait
pas &eacute;t&eacute; compl&egrave;te sans un formulaire d&eacute;crivant la configuration mat&eacute;rielle
utilis&eacute;e lors de leur ex&eacute;cution. Le voici donc : (il se conforme aux directives
prescrites dans la FAQ de comp.benchmarks) :</P>
<P>(ndt : le formulaire en question n'a d&eacute;lib&eacute;r&eacute;ment pas &eacute;t&eacute; traduit,
de fa&ccedil;on &agrave; ce que l'auteur de ce HOWTO puisse automatiser leur
traitement en vue de maintenir une base de donn&eacute;es de r&eacute;sultats. Voir
la section 4 pour un exemple de formulaire correctement rempli).</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
______________________________________________________________________
LINUX BENCHMARKING TOOLKIT REPORT FORM
______________________________________________________________________

______________________________________________________________________
CPU
==
Vendor:
Model:
Core clock:
Motherboard vendor:
Mbd. model:
Mbd. chipset:
Bus type:
Bus clock:
Cache total:
Cache type/speed:
SMP (number of processors):
______________________________________________________________________

______________________________________________________________________
RAM
====
Total:
Type:
Speed:
______________________________________________________________________

______________________________________________________________________
Disk
====
Vendor:
Model:
Size:
Interface:
Driver/Settings:
______________________________________________________________________

______________________________________________________________________
Video board
===========
Vendor:
Model:
Bus:
Video RAM type:
Video RAM total:
X server vendor:
X server version:
X server chipset choice:
Resolution/vert. refresh rate:
Color depth:
______________________________________________________________________

______________________________________________________________________
Kernel
=====
Version:
Swap size:
______________________________________________________________________

______________________________________________________________________
gcc
===
Version:
Options:
libc version:
______________________________________________________________________

______________________________________________________________________
Test notes
==========
______________________________________________________________________

______________________________________________________________________
RESULTS
========
Linux kernel 2.0.0 Compilation Time: (minutes and seconds)
Whetstones: results are in MWIPS.
Xbench: results are in xstones.
Unixbench Benchmarks 4.01 system INDEX:
BYTEmark integer INDEX:
BYTEmark memory INDEX:
______________________________________________________________________

______________________________________________________________________
Comments*
=========
* Ce champ n'est present dans ce formulaire que pour de possibles
interpretations des resultats, et tant que tel, il est optionnel.
Il pourrait cependant constituer la partie la plus importante de votre
compte-rendu, tout particulierement si vous faites de l'evaluation
de performances comparative.
______________________________________________________________________
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>3.7 <A NAME="ss3.7"></A> Test de performances r&eacute;seau</H2>

<P></P>
<P>Le test des performances r&eacute;seau est un v&eacute;ritable d&eacute;fi en soi puisqu'il
implique au moins deux machines: un serveur et une machine cliente. Pour cette
raison ce genre de test n&eacute;cessite deux fois plus de temps pour &ecirc;tre mis
en place, il y a plus de variables &agrave; contr&ocirc;ler, etc... Sur un r&eacute;seau
Ethernet, il me semble votre meilleure option est le paquetage ttcp. (&agrave;
developper)</P>
<P></P>

<H2>3.8 <A NAME="ss3.8"></A> Les tests SMP</H2>

<P></P>
<P>Les tests SMP sont un autre d&eacute;fi, et tout test con&ccedil;u sp&eacute;cifiquement
pour un environnement SMP aura des difficult&eacute;s &agrave; s'av&eacute;rer valide dans
des conditions d'utilisation r&eacute;elles parce que les algorithmes qui tirent
parti du SMP sont difficiles &agrave; d&eacute;velopper. Il semble que les versions
du noyau Linux les plus r&eacute;centes (&gt; 2.1.30 ou pas loin) feront du scheduling
(ndt : ordonnancement de thread ou de processus) &agrave; grain fin ; je n'ai pas
plus d'information que &ccedil;a pour le moment.</P>
<P>Selon David Niemi, <EM>"... shell8</EM> de la suite Unixbench 4.01
<EM>fait du bon travail en mati&egrave;re de comparaison de mat&eacute;riel/SE similaires
en mode SMP et en mode UP."</EM></P>
<P>(ndt : SMP = Symetric Multi-Processing, UP = Uni-Processor)</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="Benchmarking-HOWTO-4.html">suivant</A>,
Chapitre <A HREF="Benchmarking-HOWTO-2.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Benchmarking-HOWTO.html#toc3">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>