Benchmarking HOWTO Linux
par Andre D. Balsa,
[email protected] <mailto:andrew-
[email protected]>
traduit par Francois Laagel,
[email protected]
<mailto:
[email protected]>
v0.12, 15 Aout 1997 (v.f. : 2 du 28 Novembre 1997)
Le benchmarking HOWTO Linux traite de certains problemes relatifs a
l'evaluation de performances de systemes Linux et presente un ensemble
d'outils ainsi qu'un formulaire associe qui permettent de produire des
mesures de performances significatives en quelques heures. Peut-etre
ce document contribuera-t-il a une diminution du nombre d'articles
inutiles dans comp.os.linux.hardware...
11.. IInnttrroodduuccttiioonn
_"_C_e _d_o_n_t _o_n _n_e _p_e_u_t _p_a_r_l_e_r _d_o_i_t _e_t_r_e _p_a_s_s_e _s_o_u_s _s_i_l_e_n_c_e_._"
_L_u_d_w_i_g _W_i_t_t_g_e_n_s_t_e_i_n _(_1_8_8_9_-_1_9_5_1_)_, _p_h_i_l_o_s_o_p_h_e _A_u_t_r_i_c_h_i_e_n
L'evaluation de performances (benchmarking) consiste a mmeessuurreerr la
vitesse a laquelle un ordinateur execute une tache calculatoire, et ce
de facon a pouvoir comparer differentes configurations
logicielles/materielles. Ceci n'a aauuccuunn rapport avec la facilite
d'utilisation, l'esthetique, les considerations d'ergonomie ou toute
autre appreciation subjective.
L'evaluation de performances est une tache fastidieuse et repetitive.
Elle necessite que l'on prete une grande attention aux details. Tres
souvent les resultats obtenus ne sont pas ceux auxquels on s'attendait
et sont sujet a interpretation (ce qui peut tres bien etre le but
d'une procedure d'evaluation de performances).
Enfin, l'evaluation de performances traite de faits et de chiffres et
non pas d'opinion ou d'approximation.
11..11.. PPoouurrqquuooii ll''eevvaalluuaattiioonn ddee ppeerrffoorrmmaanncceess eesstt--eellllee ssii iimmppoorrttaannttee ??
Hormis les raisons mentionnees dans le BogoMips Mini-HOWTO (section 7,
paragraphe 2), il arrive, lorsque l'on se constitue une machine Linux,
que l'on soit confronte a un budget limite et/ou a des besoins en
performances minimales garanties.
En d'autres termes, lorsque l'on se pose les questions suivantes :
+o Comment maximiser la performance avec un budget donne ?
+o Comment minimiser le cout necessaire pour obtenir un niveau de
performance donne ?
+o Comment obtenir le meilleur rapport performance/cout (etant donne
un budget ou des besoins en performances minimales garanties) ?
il faudra examiner, comparer et/ou produire des benchmarks (ndt : un
benchmark est un programme ou un ensemble de programmes - on parle
alors de suite - servant a evaluer les performances d'un systeme
informatique).
Minimiser les couts sans contraintes de performance implique
d'ordinaire la constitution d'une machine a partir de composants de
recuperation (ce vieux 386SX-16 qui traine dans le garage sera
parfait), et ne necessite pas de benchmarks. Maximiser la performance
sans cout plafond n'est pas une situation realiste (a moins que l'on
souhaite mettre un Cray dans son salon - la banquette recouverte de
cuir qui se trouve au dessus des alimentations electriques est du
meilleur gout, n'est-t-il pas ?).
L'evaluation de performances sans contrainte de cout ni de performance
minimale garantie n'a pas de sens: c'est une perte de temps et
d'argent. L'evaluation de performances n'a de sens que dans le cadre
d'une prise de decision, c'est a dire si l'on a le choix entre deux
alternatives ou plus.
D'ordinaire des criteres autres que le ccoouutt interviennent dans le
processus decisionnel. Il peut s'agir de la disponibilite, du service,
de la fiabilite, de considerations strategiques ou de toute autre
caracteristique rationnelle et mesurable d'un systeme informatique.
Par exemple, lorsque l'on compare la performance de differentes
versions du noyau Linux, la ssttaabbiilliittee est toujours plus importante que
la vitesse d'execution.
11..22.. NNoonn--ccrriitteerreess eenn mmaattiieerree dd''eevvaalluuaattiioonn ddee ppeerrffoorrmmaanncceess
Malheureusement et tres souvent dans les newsgroups (forums) et les
mailing lists (listes de diffusion par courrier electronique), sont
cites :
1. La reputation du fabriquant (non-mesurable et sans signification).
2. Les parts de marche du fabriquant (sans signification et non-
pertinent).
3. Des parametres irrationnels (superstition ou a-priori par exemple
acheteriez-vous un processeur etiquete 131313ZAP et peint en rose
?).
4. La valeur percue (non-significative, non-mesurable et
irrationnelle).
5. L'ampleur du tapage marketing (ndt : mercatique pour les
integristes :) est ce qu'il y a de pire, je crois. Personnellement,
j'en ai marre des logos "XXX inside" ou "kkkkkws compatible"
(maintenant "aaaaaPowered" est de la partie, et puis quoi encore
?). AMHA, les milliards de dollards depenses durant de telles
campagnes seraient bien mieux utilises par de equipes de recherche
pour la conception de nouveaux processeurs, plus rapides (moins
chers :-) et moins bugges. Aucune campagne publicitaire, si
ambitieuse soit-elle, n'est en mesure de supprimer une bug de la
FPU en calcul flottant sur le tout nouveau processeur que vous
venez tout juste d'enficher sur votre carte-mere, alors qu'un
echange au profit d'un processeur re-concu le fera.
6. Les opinions du type "Vous avez ce pour quoi vous avez paye" ne
sont precisement que ca : des opinions. Donnez-moi des faits, s'il
vous plait.
22.. PPrroocceedduurreess dd''eevvaalluuaattiioonn ddee ppeerrffoorrmmaanncceess eett iinntteerrpprreettaattiioonn ddeess
rreessuullttaattss
Quelques recommendations semi-evidentes :
1. Premierement et avant tout, iiddeennttiiffiieezz vvooss oobbjjeeccttiiffss dd''eevvaalluuaattiioonn
ddee ppeerrffoorrmmaanncceess. Qu'essayez vous exactement d'evaluer ? En quoi un
processus d'evaluation de performances va-t-il vous aider a prendre
une decision ulterieure ? Combien de temps et quelles ressources
voulez-vous consacrer a cet effort ?
2. UUttiilliisseezz ddeess oouuttiillss ssttaannddaarrdd. Utilisez une version a jour et stable
du noyau, des versions standard et a jour de gcc et de la libc, et
un benchmark standard. En bref, utilisez le LBT (voir plus loin).
3. Donnez une ddeessccrriippttiioonn ccoommpplleettee de votre configuration materielle
(voir le formulaire de compte-rendu plus loin).
4. Essayez d'iissoolleerr uunnee vvaarriiaabbllee uunniiqquuee. L'evaluation de performances
comparative est plus informative que l'evaluation de performances
"absolue". JJee nn''iinnssiisstteerraaii jjaammaaiiss aasssseezz llaa--ddeessssuuss.
5. VVeerriiffiieezz vvooss rreessuullttaattss. Faites tourner vos benchmarks plusieurs
fois et verifiez les variations des resultats obtenus, si variation
il y a. Des variations inexpliquees invalideront vos resultats.
6. Si vous pensez que votre effort d'evaluation de performances a
produit de l'information significative, ppaarrttaaggeezz--llaa avec la
communaute Linux de facon pprreecciissee et ccoonncciissee.
7. OOuubblliieezz lleess BBooggooMMiippss s'il vous plait. Je me promets d'implementer
un jour un ASIC (ndt : un acronyme pour Application Specific
Integrated Circuit, c'est un circuit integre dedie a une
application donnee) dans lequel les BogoMips seront cables. Et
alors on verra ce qu'on verra !
22..11.. CCoommpprreennddrree lleess cchhooiixx eenn mmaattiieerree ddee bbeenncchhmmaarrkkss
22..11..11.. BBeenncchhmmaarrkkss ssyynntthheettiiqquueess vvss.. bbeenncchhmmaarrkkss aapppplliiccaattiiffss
Avant de consacrer le moindre temps aux travaux d'evaluation de
performances, il importe de faire un choix de base entre benchmarks
synthetiques et benchmarks applicatifs.
Les benchmarks synthetiques sont specifiquement concus pour mesurer la
performance des composants individuels d'un ordinateur, d'habitude en
poussant l'un desdits composants jusqu'a sa limite. Un exemple de
benchmark synthetique celebre est la suite WWhheettssttoonnee, initialement
programmee en 1972 par Harold Curnow en FORTRAN (ou etait-ce en ALGOL
?), et dont l'usage est toujours tres repandu de nos jours. La suite
Whetstone produira une mesure de la performance d'une CPU en matiere
de calcul flottant.
La principale critique que l'on puisse faire aux benchmarks
synthetiques est qu'ils ne representent pas la performance d'un
ordinateur, en tant que systeme complexe, dans des conditions
d'utilisation reelles. Prenons par exemple la suite Whetstone, dont
la boucle principale est tres courte, et qui donc peut aisement tenir
dans le cache primaire d'une CPU, cette suite maintient le pipeline de
la FPU alimente en permanence de facon a pousser celle-ci a sa vitesse
maximale. On ne peut pas vraiment critiquer la suite Whetstone si l'on
se souvient qu'elle a ete programmee il y a 25 ans (sa conception est
meme plus ancienne que ca !), mais il nous faut nous assurer que nous
interpretons ses resultats avec prudence quand nous nous preoccupons
d'evaluer les performances de micro-processeurs modernes.
Un autre aspect tres important qu'il nous faut avoir en tete a propos
des benchmarks synthetiques est qu'idealement, ils devraient pouvoir
nous dire quelque chose en ce qui concerne un aspect ssppeecciiffiiqquuee du
systeme que l'on est en train de tester, et ce independamment des
autres aspects dudit syseme : un benchmark synthetique d'une carte
D'E/S Ethernet devrait produire les memes resultats (ou des resultats
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'etait pas le cas, le test
mesurerait la performance globale de l'association CPU/carte-
mere/bus/carte Ethernet/sous-systeme memoire/DMA, ce qui n'est pas
tres utile puisque la difference au niveau des CPUs aura un impact
plus important que la difference au niveau des cartes Ethernet (ceci
suppose bien sur que nous utilisions la meme combinaison noyau/driver
(pilote de peripherique)). Dans le cas contraire la difference de
performances pourrait etre encore plus grande) !
Enfin, une erreur frequemment commise est de calculer la moyenne de
divers benchmarks synthetiques et de pretendre qu'une telle moyenne
est une bonne representation de la performance globale d'un systeme
donne pour une utilisation dans la vie reelle.
Voici un commentaire sur les benchmarks FPU (cite avec la permission
du site Web de Cyrix Corp.) :
_"_U_n_e _u_n_i_t_e _d_e _c_a_l_c_u_l _f_l_o_t_t_a_n_t _a_c_c_e_l_e_r_e _l_e _l_o_g_i_c_i_e_l _c_o_n_c_u
_p_o_u_r _l_'_u_t_i_l_i_s_a_t_i_o_n _d_e _l_'_a_r_i_t_h_m_e_t_i_q_u_e _f_l_o_t_t_a_n_t_e _: _t_y_p_i_q_u_e_m_e_n_t
_i_l _s_'_a_g_i_t _d_e _p_r_o_g_r_a_m_m_e_s _d_e _C_A_O_, _d_e _t_a_b_l_e_u_r_s_, _d_e _j_e_u_x _e_n _3_D
_e_t _d_'_a_p_p_l_i_c_a_t_i_o_n_s _d_e _c_o_n_c_e_p_t_i_o_n_. _C_e_p_e_n_d_a_n_t_, _l_a _p_l_u_p_a_r_t _d_e_s
_a_p_p_l_i_c_a_t_i_o_n_s _P_C _p_o_p_u_l_a_i_r_e_s _d_'_a_u_j_o_u_r_d_'_h_u_i _u_t_i_l_i_s_e_n_t _a _l_a _f_o_i_s
_d_e_s _i_n_s_t_r_u_c_t_i_o_n_s _f_l_o_t_t_a_n_t_e_s _e_t _l_'_a_r_i_t_h_m_e_t_i_q_u_e _e_n_t_i_e_r_e_. _C_'_e_s_t
_p_o_u_r_q_u_o_i _C_y_r_i_x _a _c_h_o_i_s_i _d_e _m_e_t_t_r_e _l_'_a_c_c_e_n_t _s_u_r _l_e _p_a_r_a_l_-
_l_e_l_i_s_m_e _l_o_r_s _d_e _l_a _c_o_n_c_e_p_t_i_o_n _d_u _p_r_o_c_e_s_s_e_u_r _6_x_8_6 _e_t _c_e _d_a_n_s
_l_e _b_u_t _d_'_a_c_c_e_l_e_r_e_r _l_e_s _p_r_o_g_r_a_m_m_e_s _q_u_i _e_n_t_r_e_m_e_l_e_n_t _c_e_s _2
_t_y_p_e_s _d_'_i_n_s_t_r_u_c_t_i_o_n_s_.
_L_e _m_o_d_e_l_e _d_e _t_r_a_i_t_e_m_e_n_t _d_e_s _e_x_c_e_p_t_i_o_n_s _f_l_o_t_t_a_n_t_e_s _d_e
_l_'_a_r_c_h_i_t_e_c_t_u_r_e _x_8_6 _p_e_r_m_e_t _a_u_x _i_n_s_t_r_u_c_t_i_o_n_s _e_n_t_i_e_r_e_s _d_'_e_t_r_e
_e_m_i_s_e_s _e_t _d_e _s_e _t_e_r_m_i_n_e_r _p_e_n_d_a_n_t _q_u_'_u_n_e _i_n_s_t_r_u_c_t_i_o_n _f_l_o_t_-
_t_a_n_t_e _e_s_t _e_n _c_o_u_r_s _d_'_e_x_e_c_u_t_i_o_n_. _A _l_'_o_p_p_o_s_e_, _u_n_e _s_e_c_o_n_d_e
_o_p_e_r_a_t_i_o_n _f_l_o_t_t_a_n_t_e _n_e _p_o_u_r_r_a _p_a_s _e_t_r_e _e_x_e_c_u_t_e_e _a_l_o_r_s _q_u_'_u_n_e
_p_r_e_c_e_d_e_n_t_e _i_n_s_t_r_u_c_t_i_o_n _f_l_o_t_t_a_n_t_e _e_s_t _e_n _c_o_u_r_s _d_'_e_x_e_c_u_t_i_o_n_.
_P_o_u_r _s_u_p_p_r_i_m_e_r _c_e_t_t_e _l_i_m_i_t_a_t_i_o_n _d_e _p_e_r_f_o_r_m_a_n_c_e _c_r_e_e_e _p_a_r _l_e
_m_o_d_e_l_e _d_e _t_r_a_i_t_e_m_e_n_t _d_e_s _e_x_c_e_p_t_i_o_n_s _f_l_o_t_t_a_n_t_e_s_, _l_e _6_x_8_6_,
_p_e_u_t _e_m_e_t_t_r_e _s_p_e_c_u_l_a_t_i_v_e_m_e_n_t _j_u_s_q_u_'_a _4 _i_n_s_t_r_u_c_t_i_o_n_s _f_l_o_t_-
_t_a_n_t_e_s _v_e_r_s _l_a _F_P_U _i_n_t_e_g_r_e_e _s_u_r _l_e _c_i_r_c_u_i_t_. _P_a_r _e_x_e_m_p_l_e_,
_d_a_n_s _u_n_e _s_e_q_u_e_n_c_e _d_e _c_o_d_e _c_o_n_s_t_i_t_u_e_e _d_e _2 _i_n_s_t_r_u_c_t_i_o_n_s _f_l_o_t_-
_t_a_n_t_e_s _(_F_L_T_s_) _s_u_i_v_i_e_s _d_e _6 _i_n_s_t_r_u_c_t_i_o_n_s _e_n_t_i_e_r_e_s _(_I_N_T_s_)_,
_e_l_l_e_s_-_m_e_m_e_s _s_u_i_v_i_e_s _d_e _2 _F_L_T_s_, _l_e _6_x_8_6 _p_e_u_t _e_m_e_t_t_r_e _t_o_u_t_e_s
_c_e_s _1_0 _i_n_s_t_r_u_c_t_i_o_n_s _v_e_r_s _l_e_s _u_n_i_t_e_s _d_'_e_x_e_c_u_t_i_o_n _a_p_p_r_o_p_r_i_e_e_s
_a_v_a_n_t _q_u_e _l_'_e_x_e_c_u_t_i_o_n _d_e _l_a _p_r_e_m_i_e_r_e _F_L_T _n_e _s_e _s_o_i_t _t_e_r_m_i_-
_n_e_e_. _S_i _a_u_c_u_n_e _d_e _c_e_s _i_n_s_t_r_u_c_t_i_o_n_s _n_e _p_r_o_v_o_q_u_e _d_'_e_x_c_e_p_t_i_o_n
_(_c_e _q_u_i _e_s_t _t_y_p_i_q_u_e_)_, _l_'_e_x_e_c_u_t_i_o_n _c_o_n_t_i_n_u_e_, _l_e_s _u_n_i_t_e_s _f_l_o_t_-
_t_a_n_t_e_s _e_t _e_n_t_i_e_r_e_s _t_e_r_m_i_n_a_n_t _l_'_e_x_e_c_u_t_i_o_n _d_e _c_e_s _i_n_s_t_r_u_c_t_i_o_n_s
_e_n _p_a_r_a_l_l_e_l_e_. _S_i _l_'_u_n_e _d_e_s _F_L_T_s _g_e_n_e_r_e _u_n_e _e_x_c_e_p_t_i_o_n _(_l_e
_c_a_s _a_t_y_p_i_q_u_e_)_, _l_e_s _p_o_s_s_i_b_i_l_i_t_e_s _d_'_e_x_e_c_u_t_i_o_n _s_p_e_c_u_l_a_t_i_v_e_s _d_u
_6_x_8_6 _p_e_r_m_e_t_t_e_n_t _q_u_e _l_'_e_t_a_t _d_u _p_r_o_c_e_s_s_e_u_r _s_o_i_t _r_e_s_t_i_t_u_e _d_e
_f_a_c_o_n _a _c_e _q_u_e _c_e_l_u_i_-_c_i _s_o_i_t _c_o_m_p_a_t_i_b_l_e _a_v_e_c _l_e _m_o_d_e_l_e _d_e
_t_r_a_i_t_e_m_e_n_t _d_e_s _e_x_c_e_p_t_i_o_n_s _f_l_o_t_t_a_n_t_e_s_.
_L_'_e_x_a_m_e_n _d_e _c_o_d_e _d_e _b_e_n_c_h_m_a_r_k_s _s_y_n_t_h_e_t_i_q_u_e_s _f_l_o_t_t_a_n_t_s _r_e_v_-
_e_l_e _q_u_e _c_e_u_x_-_c_i _u_t_i_l_i_s_e_n_t _d_e_s _s_e_q_u_e_n_c_e_s _d_'_i_n_s_t_r_u_c_t_i_o_n_s
_p_u_r_e_m_e_n_t _f_l_o_t_t_a_n_t_e_s _q_u_e _l_'_o_n _n_e _t_r_o_u_v_e _p_a_s _d_a_n_s _l_e_s _a_p_p_l_i_c_a_-
_t_i_o_n_s _d_u _m_o_n_d_e _r_e_e_l_. _C_e _t_y_p_e _d_e _b_e_n_c_h_m_a_r_k_s _n_e _t_i_r_e _p_a_s
_p_r_o_f_i_t _d_e_s _p_o_s_s_i_b_i_l_i_t_e_s _d_'_e_x_e_c_u_t_i_o_n _s_p_e_c_u_l_a_t_i_v_e _d_u _p_r_o_-
_c_e_s_s_e_u_r _6_x_8_6_. _C_y_r_i_x _p_e_n_s_e _q_u_e _l_e_s _b_e_n_c_h_m_a_r_k_s _n_o_n_-_s_y_n_t_h_e_-
_t_i_q_u_e_s _b_a_s_e_s _s_u_r _d_e_s _a_p_p_l_i_c_a_t_i_o_n_s _d_u _m_o_n_d_e _r_e_e_l _r_e_f_l_e_t_e_n_t
_m_i_e_u_x _l_a _p_e_r_f_o_r_m_a_n_c_e _q_u_e _l_e_s _u_t_i_l_i_s_a_t_e_u_r_s _v_o_n_t _e_f_f_e_c_t_i_v_e_m_e_n_t
_o_b_t_e_n_i_r_. _L_e_s _a_p_p_l_i_c_a_t_i_o_n_s _d_u _m_o_n_d_e _r_e_e_l _c_o_n_t_i_e_n_n_e_n_t _d_e_s
_i_n_s_t_r_u_c_t_i_o_n_s _e_n_t_i_e_r_e_s _e_t _f_l_o_t_t_a_n_t_e_s _e_n_t_r_e_m_e_l_e_e_s _e_t _p_o_u_r
_c_e_t_t_e _r_a_i_s_o_n _t_i_r_e_r_o_n_t _u_n _m_e_i_l_l_e_u_r _p_a_r_t_i _d_e_s _p_o_s_s_i_b_i_l_i_t_e_s
_d_'_e_x_e_c_u_t_i_o_n _s_p_e_c_u_l_a_t_i_v_e _d_u _6_x_8_6_._"
La tendance recente en matiere d'evaluation de performances consiste
donc a choisir des applications usuelles et a les utiliser pour
mesurer la performance d'ordinateurs en tant que systemes complexes.
Par exemple SSPPEECC, l'entreprise a but non-lucratif qui a concu les
celebres suites de benchmarks synthetiques SPECINT et SPECFP, a lance
un projet pour developper une nouvelle suite de benchmarks
applicatifs. Mais, la encore, il est tres improbable qu'une telle
suite de benchmarks commerciale comporte du code Linux un jour.
En resume, les benchmarks synthetiques sont valables a condition
d'avoir compris leurs objectifs et leurs limites. Les benchmarks
applicatifs refleteront mieux la performance d'un systeme
informatique, mais aucun d'entre eux n'est disponible pour Linux.
22..11..22.. BBeenncchhmmaarrkkss ddee hhaauutt--nniivveeaauu vvss.. ddee bbaass--nniivveeaauu
Les benchmarks de bas-niveau ont pour ambition la mesure de la
performance du materiel : la frequence 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'acces moyen d'un disque dur, temps d'acces
piste a piste, etc...
Cette approche peut etre utile si vous avez achete un systeme et que
vous vous demandez a partir de quels composants il a ete construit,
bien qu'une meilleure facon de repondre a cette question soit d'ouvrir
le boitier, de dresser l'inventaire des composants que vous trouverez
a l'interieur, et d'obtenir les specifications techniques pour chacun
d'entre eux (elles sont la plupart du temps disponibles sur le Web).
Une autre utilisation possible des benchmarks de bas-niveau consiste a
s'en servir pour verifier qu'un driver du noyau a ete correctement
configure pour un composant materiel donne : si vous disposez des
specifications techniques de ce composant vous pourrez comparer les
resultats d'un benchmark de bas-niveau aux valeurs theoriques figurant
dans les specs.
Les benchmarks de haut-niveau ont plutot pour objectif la mesure de la
performance de l'association materiel/driver/systeme d'exploitation en
ce qui concerne un aspect specifique d'un systeme informatique (par
exemple la performance des entrees-sorties), ou meme une association
specifique materiel/driver/systeme d'exploitation/application (par
exemple un benchmark Apache sur differents ordinateurs).
Bien sur, tous les benchmarks de bas-niveau sont synthetiques. Les
benchmarks de haut-niveau peuvent etre synthetiques ou applicatifs.
22..22.. BBeenncchhmmaarrkkss ssttaannddaarrdd ddiissppoonniibblleess ppoouurr LLiinnuuxx
AMHA, un test simple que tout le monde peut effectuer a l'occasion
d'une mise a jour de la configuration de sa machine Linux est de
lancer une compilation du noyau avant et apres cette mise a jour
materielle/logicielle, et de comparer les durees de compilation. Si
tous les autres parametres sont les memes, alors ce test est valable
en tant que mesure de la performance en matiere de compilation, et
l'on peut affirmer en toute confiance que :
"Le remplacement de A par B a conduit a une amelioration de
x % de la duree de compilation du noyau Linux dans telles et
telles conditions".
Ni plus, ni moins !
Parce que la compilation du noyau est une tache tres courante sous
Linux, et parce qu'elle met en oeuvre la plupart des fonctionnalites
impliquees dans les benchmarks usuels (sauf le calcul flottant), elle
constitue un test iissoollee plutot bon. Cependant, dans la majeure partie
des cas, les resultats de ce test ne peuvent pas etre reproduits par
d'autres utilisateurs de Linux a cause des differences de
configurations materielles/logicielles. Ce test ne constitue donc en
aucun cas une metrique permettant de comparer des systemes
dissemblables (a moins que nous ne nous mettions tous d'accord sur la
compilation d'un noyau standard - voir plus loin).
Malheureusement, il n'y a pas d'outils d'evaluation de performances
ciblant specifiquement Linux, sauf peut-etre les Byte Linux
Benchmarks. Ceux-ci sont une version legerement modifiee des Byte Unix
Benchmarks qui datent de 1991 (modifications Linux par Jon Tombs,
auteurs originels : Ben Smith, Rick Grehan et Tom Yager).
Il existe un site Web central pour les Byte Linux Benchmarks.
Une version amelioree et mise a jour des Byte Unix Benchmarks a ete
synthetisee par David C. Niemi. Elle s'appelle UnixBench 4.01 pour
eviter une confusion possible avec des versions anterieures. Voici ce
que David a ecrit au sujet de ses modifications :
"Les BYTE Unix benchmarks originels et legerement modifies
sont nases a bien des egards ce qui fait d'eux un indicateur
inhabituellement non-fiable de la performance d'un systeme.
J'ai deliberement fait en sorte que mes indices de perfor-
mance soient tres differents pour eviter la confusion avec
les vieux benchmarks."
David a mis en place une liste majordomo de diffusion par courrier
electronique pour les discussions relatives a l'evaluation de
performances sous Linux et sous les systemes d'exploitation
concurrents. Vous pouvez vous joindre a ces discussions en envoyant
un e-mail dont le corps contiendra "subscribe bench" a l'adresse
[email protected] <mailto:
[email protected]>. Les
groupe des utilisateurs de la region de Washington est aussi en train
de mettre en place un site Web concernant les benchmarks sous Linux.
Recemment, Uwe F. Mayer,
[email protected]
<mailto:
[email protected]> a egalement porte la suite Bytemark
de BYTE sous Linux. Il s'agit d'une suite moderne et compilee tres
habilement par Rick Grehan du magazine BYTE. Bytemark teste les
performances de la CPU, de la FPU et du sous-systeme memoire des
micro-ordinateurs modernes (ces benchmarks sont strictement orientes
vers la performance du processeur, les E/S ou la performance globale
du systeme ne sont pas pris en compte).
Uwe a aussi mis en place un site Web, site ou l'on peut acceder a une
base de donnees contenant les resultats de sa version des benchmarks
BYTEmark pour Linux.
Si vous etes a la recherche de benchmarks synthetiques pour Linux,
vous remarquerez assez vite que sunsite.unc.edu ne propose que peu
d'outils d'evaluation 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.
XFree86-benchmarks Survey est un site Web comprenant une base de
donnees de resultats relatifs a x-bench.
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 grace aux
options -t et -T.
Il existe plein d'autres outils disponibles librement (sous license
GPL) sur Internet pour tester divers aspects de la performance de
votre machine Linux.
22..33.. LLiieennss eett rreeffeerreenncceess
La FAQ du newsgroup comp.benchmarks par Dave Sill est la reference
standard en matiere d'evaluation de performances. Elle n'est pas
particulierement orientee Linux, mais elle n'en reste pas moins une
lecture recommendee pour tous ceux qui font preuve d'un minimum de
serieux envers le sujet. Elle est disponible sur nombre de sites FTP
et de sites Web et recense 5566 bbeenncchhmmaarrkkss ddiiffffeerreennttss avec des liens
vers des sites FTP permettant de les telecharger. Cependant, certains
des benchmarks recenses sont des produits commerciaux.
Je n'entrerai pas dans la description detaillee des benchmarks
mentionnes 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 suite lmbench de Larry McVoy. Je cite David C. Niemi
:
_"_L_i_n_u_s _e_t _D_a_v_i_d _M_i_l_l_e_r _s_'_e_n _s_e_r_v_e_n_t _b_e_a_u_c_o_u_p _p_a_r_c_e _q_u_'_e_l_l_e
_p_e_r_m_e_t _d_e_s _m_e_s_u_r_e_s _d_e _b_a_s_-_n_i_v_e_a_u _u_t_i_l_e_s _e_t _p_e_u_t _a_u_s_s_i _q_u_a_n_-
_t_i_f_i_e_r _l_a _b_a_n_d_e _p_a_s_s_a_n_t_e _e_t _l_a _l_a_t_e_n_c_e _d_'_u_n _r_e_s_e_a_u _s_i _v_o_u_s
_a_v_e_z _d_e_u_x _m_a_c_h_i_n_e_s _a _v_o_t_r_e _d_i_s_p_o_s_i_t_i_o_n _p_o_u_r _l_e _f_a_i_r_e
_t_o_u_r_n_e_r_. _M_a_i_s _l_m_b_e_n_c_h _n_'_e_s_s_a_i_e _p_a_s _d_e _p_r_o_d_u_i_r_e _u_n _i_n_d_i_c_e _d_e
_p_e_r_f_o_r_m_a_n_c_e _g_l_o_b_a_l_._._._"
Un site FTP assez complet en matiere de benchmarks disponibles
lliibbrreemmeenntt a ete mis en place par Alfred Aburto. La suite Whetstone
utilisee dans le LBT est disponible sur ce site.
Une FFAAQQ mmuullttii--ffiicchhiieerr ppaarr EEuuggeennee MMiiyyaa est egalement postee sur
comp.benchmarks; c'est une excellente reference.
33.. LLee LLiinnuuxx BBeenncchhmmaarrkkiinngg TToooollkkiitt ((LLBBTT))
Je propose ici un ensemble d'outils pour l'evaluation de performances
sous Linux. C'est la version preliminaire d'un vaste environnement
d'evaluation de performances pour Linux, il est destine a etre
ameliore et a voir ses fonctionnalites etendues. Prenez le pour ce
qu'il vaut, c'est-a-dire une proposition. Si vous pensez que cette
suite de test n'est pas valable, prenez la liberte de m'envoyer (ndt :
a l'auteur et non au traducteur, merci :-) vos critiques par e-mail et
soyez surs que je serai heureux d'integrer les changements que vous
aurez suggere dans la mesure du possible. Avant d'entamer une
polemique, lisez ce HOWTO et les documents cites en reference : les
critiques informes sont les bienvenus, les critiques steriles ne le
sont pas.
33..11.. MMoottiivvaattiioonnss
Elles sont dictees par le bon sens, tout simplement :
1. Cette suite ne doit pas necessiter plus d'une journee de duree
d'execution. En matiere de benchmarks comparatifs (diverses
executions), personne ne veut passer des jours a essayer de trouver
la configuration materielle le plus rapide pour un systeme donne.
Idealement, l'ensemble de la suite devrait pouvoir tourner en 15
minutes sur une machine moyenne.
2. Tout le code source doit etre disponible librement sur le Net, pour
des raisons evidentes.
3. Les benchmarks devraient fournir des chiffres simples et refletant
la performance mesuree.
4. Il devait y avoir un melange de benchmarks synthetiques et de
benchmarks applicatifs.
5. Chacun des benchmarks ssyynntthheettiiqquueess devrait pousser un sous-systeme
particulier a ses limites.
6. Les resultats des benchmarks ssyynntthheettiiqquueess ne devraient ppaass etre
combines par le biais d'une moyenne afin d'en extraire un facteur
de merite global (cela va a l'encontre du principe fondateur des
benchmarks synthetiques et conduit a une perte d'information
considerable).
7. Les benchmarks applicatifs devraient etre representatifs de taches
couramment executees sur des systemes Linux.
33..22.. SSeelleeccttiioonn ddeess bbeenncchhmmaarrkkss
J'ai selectionne 5 suites des benchmarks differentes en evitant autant
que possible les recouvrements dans les tests :
1. Compilation du noyau 2.0.0 (configuration par defaut) avec gcc.
2. Whetstone version 10/03/97 (la version la plus recente de Roy
Longbottom).
3. xbench-0.2 (avec les parametres d'execution rapide).
4. Les benchmarks UnixBench version 4.01 (resultats partiels).
5. Les benchmarks de la suite BYTEmark du magazine BYTE beta release 2
(resultats partiels).
Pour les tests 4 et 5, "(resultats partiels)" signifie qu'une partie
seulement des resultats produits est prise en compte.
33..33.. DDuurreeee ddeess tteessttss
1. Compilation du noyau 2.0.0 : 5 - 30 minutes, selon la performance
rreeeellllee de votre machine.
2. Whetstone : 100 secondes.
3. Xbench-0.2 : < 1 heure.
4. Les benchmarks d'UnixBench version 4.01 : environs 15 minutes.
5. Les benchmarks de la suite BYTEmark du magazine BYTE : environs 10
minutes.
33..44.. CCoommmmeennttaaiirreess
33..44..11.. CCoommppiillaattiioonn dduu nnooyyaauu 22..00..00
+o QQuuooii :: c'est le seul benchmark applicatif de la LBT.
+o Le code est largement disponible (cad que j'ai finalement trouve
une utilisation pour mes vieux CD-ROMs Linux).
+o La plupart des linuxiens recompilent leur noyau assez souvent,
c'est donc une mesure significative de la performance globale.
+o Le noyau est gros et gcc utilise une bonne partie de la memoire
(ndt : surtout a l'edition de liens) : ceci contribue a attenuer le
biais induit par le cache L2 lorsque l'on se contente de passer de
petits tests.
+o Les E/S vers le disque sont frequentes.
+o Procedure de test : trouvez une antique arborescence source de
2.0.0, compilez la avec les options par defaut (make config,
appuyez sur Enter autant de fois que necessaire). Le temps affiche
doit correspondre a la duree passee sur la compilation cad apres
que vous ayez tape make zImage (sans prendre en compte le make dep
clean). Notez que l'architecture cible par defaut est i386, donc si
vous compilez sur une autre architecture, gcc devrait etre en
mesure de cross-compiler en utilisant i386 en tant qu'architecture
cible.
+o RReessuullttaattss :: la duree de compilation en minutes et secondes (s'il
vous plait, ne rapportez pas les fractions de secondes).
33..44..22.. LLaa ssuuiittee WWhheettssttoonnee
+o QQuuooii :: mesure la performance en calcul flottant pur a l'interieur
d'une courte (et dense) boucle. Le code source (en C) est assez
lisible et il est tres facile de voir quelles sont les operations
flottantes impliquees.
+o C'est le plus court des tests de la LBT :-).
+o C'est un "Vieux Classique" : des chiffres sont disponibles pour
comparaison, ses defauts et ses faiblesses sont bien connues.
+o Procedure de test : le code source le plus recent devrait etre
telecharge depuis le site d'Aburto. Compilez le et executez le en
mode double precision. Specifiez gcc et -O2 en tant que pre-
processeur et option du compilateur respectivement. Definissez
aussi la variable du pre-processur POSIX a 1 pour preciser le type
de machine.
+o RReessuullttaattss :: un indice de performance en calcul flottant exprime en
MWIPS.
33..44..33.. XXbbeenncchh--00..22
+o QQuuooii :: mesure la performance de serveurs X.
+o La mesure en xStones fournie par xbench est une moyenne ponderee de
quelques tests rapportes 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 legitimement se demander si xbench est
veritablement adequat en tant que test pour des serveurs X
modernes. Neanmoins, c'est le meilleur outil que j'ai trouve.
+o Procedure de test : compilez avec -O2. On specifiera aussi quelques
options pour une execution courte : ./xbench -timegoal 3 >
results/name_of_your_linux_box.out. Pour generer l'indice xStones,
il nous faudra encore lancer un script awk; la facon la plus simple
de le faire etant de taper make summary.ms. Jetez un coup d'oeuil
au fichier summary.ms : l'indice xStone de votre systeme est dans
la derniere colonne de la ligne contenant le nom de votre machine
-- nom que vous aurez specifie pendant le test.
+o RReessuullttaattss :: un indice de performances exprime en xStones.
+o Note : ce test, en l'etat, est depasse. Il devrait etre re-ecrit.
33..44..44.. UUnniixxBBeenncchh vveerrssiioonn 44..0011
+o QQuuooii : mesure la performance globale d'un systeme UNIX. Ce test met
en oeuvre evidence la performance des E/S fichier et de la gestion
du multi-taches par le noyau.
+o J'ai supprime tous les resultats de tests arithmetiques et je n'ai
conserve que les tests orientes systeme.
+o Procedure de test : make avec -O2. Execution avec ./Run -1 (tournez
chacun des tests une fois). Vous trouverez les resultats dans le
fichier ./results/report. Calculez la moyenne geometrique des
indices de EXECL THROUGHPUT, FILECOPY 1, 2, 3, PIPE THROUGHPUT,
PIPE-BASED CONTEXT SWITCHING, PROCESS CREATION, SHELL SCRIPTS et
SYSTEM CALL OVERHEAD.
+o RReessuullttaattss :: un indice de performance du systeme.
(ndt : la moyenne geometrique se definit comme la racine n-ieme du
produit des n termes consideres)
33..44..55.. LLeess bbeenncchhmmaarrkkss BByytteemmaarrkk dduu mmaaggaazziinnee BBYYTTEE
+o Quoi : fournit une bonne mesure de la performance CPU. Voici un
extrait de la documentation : _"_C_e_s _b_e_n_c_h_m_a_r_k_s _o_n_t _e_t_e_s _c_o_n_c_u _d_e
_f_a_c_o_n _a _m_e_t_t_r_e _e_n _e_v_i_d_e_n_c_e _l_a _l_i_m_i_t_e _s_u_p_e_r_i_e_u_r_e _d_e _l_a _C_P_U_, _d_e _l_a
_F_P_U _e_t _d_e _l_'_a_r_c_h_i_t_e_c_t_u_r_e _m_e_m_o_i_r_e _d_'_u_n _s_y_s_t_e_m_e_. _I_l_s _n_e _p_e_u_v_e_n_t
_m_e_s_u_r_e_r _l_a _p_e_r_f_o_r_m_a_n_c_e _d_u _s_o_u_s_-_s_y_s_t_e_m_e _g_r_a_p_h_i_q_u_e_, _d_e_s _a_c_c_e_s _d_i_s_q_u_e
_o_u _d_u _d_e_b_i_t _r_e_s_e_a_u _(_c_e _s_o_n_t _l_a _l_e _d_o_m_a_i_n_e _d_'_u_n _e_n_s_e_m_b_l_e _d_i_f_f_e_r_e_n_t
_d_e _b_e_n_c_h_m_a_r_k_s_)_. _C_'_e_s_t _p_o_u_r_q_u_o_i_, _i_l _e_s_t _s_o_u_h_a_i_t_a_b_l_e _q_u_e _v_o_u_s
_n_'_u_t_i_l_i_s_i_e_z _l_e_s _r_e_s_u_l_t_a_t_s _d_e _c_e_s _t_e_s_t_s _q_u_'_e_n _t_a_n_t _q_u_'_e_l_e_m_e_n_t
_d_'_a_p_p_r_e_c_i_a_t_i_o_n _p_a_r_t_i_e_l_l_e_, _e_t _n_o_n _p_a_s _t_o_t_a_l_e_, _l_o_r_s _d_e _l_'_e_v_a_l_u_a_t_i_o_n
_d_e _l_a _p_e_r_f_o_r_m_a_n_c_e _d_'_u_n _s_y_s_t_e_m_e_._"
+o J'ai supprime tous les resultats de test FPU puisque la suite
Whetstone est tout aussi representative des performances a cet
egard.
+o J'ai decompose les tests entiers en deux groupes : ceux qui sont
plus representatifs de la performance cache memoire/CPU, et ceux
qui utilisent l'arithmetique entiere de la CPU.
+o Procedure de test : make avec -O2. Executez le test avec ./nbench
>myresults.dat ou quelque chose d'approchant. Puis, a partir de
myresults.dat, calculez la moyenne geometrique des indices des
tests STRING SORT, ASSIGNMENT et BITFIELD. Ceci vous donnera
l'iinnddiiccee mmeemmooiirree. Calculez la moyenne geometrique des indices des
tests NUMERIC SORT, IDEA, HUFFMAN et FP EMULATION: c'est l'iinnddiiccee
eennttiieerr.
+o RReessuullttaattss :: un indice memoire et un indice entier calcules comme
explique ci-dessus.
33..55.. AAmmeelliioorraattiioonnss ppoossssiibblleess
La suite de benchmarks ideale tournerait en quelques minutes,
comprendrait des benchmarks synthetiques testant chaque sous-systeme
separement et des benchmarks applicatifs fournissant des resultats
pour differentes applications. Elle produirait aussi automatiquement
un rapport complet et eventuellement l'enverrait par e-mail a une base
de donnees centrale sur le Web.
La portabilite n'est pas vraiment notre souci premier dans cette
affaire. Pourtant, une telle suite devrait tourner au moins sur
toutes les versions (> 2.0.0) du noyau Linux, et ce dans toutes leurs
declinaisons possibles (i386, Alpha, Sparc...).
Si quelqu'un a la moindre idee concernant l'evaluation de performances
reseau au moyen d'un test a la fois simple, facile d'emploi, fiable,
et dont la mise en oeuvre prendrait moins de 30 minutes (configuration
et execution), s'il vous plait contactez-moi.
33..66.. FFoorrmmuullaaiirree ddee rraappppoorrtt LLBBTT
Au-dela des tests, la procedure d'evaluation de performances n'aurait
pas ete complete sans un formulaire decrivant la configuration
materielle utilisee lors de leur execution. Le voici donc : (il se
conforme aux directives prescrites dans la FAQ de comp.benchmarks) :
(ndt : le formulaire en question n'a deliberement pas ete traduit, de
facon a ce que l'auteur de ce HOWTO puisse automatiser leur traitement
en vue de maintenir une base de donnees de resultats. Voir la section
4 pour un exemple de formulaire correctement rempli).
______________________________________________________________________
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.
______________________________________________________________________
33..77.. TTeesstt ddee ppeerrffoorrmmaanncceess rreesseeaauu
Le test des performances reseau est un veritable defi en soi puisqu'il
implique au moins deux machines: un serveur et une machine cliente.
Pour cette raison ce genre de test necessite deux fois plus de temps
pour etre mis en place, il y a plus de variables a controler, etc...
Sur un reseau Ethernet, il me semble votre meilleure option est le
paquetage ttcp. (a developper)
33..88.. LLeess tteessttss SSMMPP
Les tests SMP sont un autre defi, et tout test concu specifiquement
pour un environnement SMP aura des difficultes a s'averer valide dans
des conditions d'utilisation reelles parce que les algorithmes qui
tirent parti du SMP sont difficiles a developper. Il semble que les
versions du noyau Linux les plus recentes (> 2.1.30 ou pas loin)
feront du scheduling (ndt : ordonnancement de thread ou de processus)
a grain fin ; je n'ai pas plus d'information que ca pour le moment.
Selon David Niemi, _"_._._. _s_h_e_l_l_8 de la suite Unixbench 4.01 _f_a_i_t _d_u _b_o_n
_t_r_a_v_a_i_l _e_n _m_a_t_i_e_r_e _d_e _c_o_m_p_a_r_a_i_s_o_n _d_e _m_a_t_e_r_i_e_l_/_S_E _s_i_m_i_l_a_i_r_e_s _e_n _m_o_d_e
_S_M_P _e_t _e_n _m_o_d_e _U_P_._"
(ndt : SMP = Symetric Multi-Processing, UP = Uni-Processor)
44.. UUnnee eexxeeccuuttiioonn ttyyppee eett lleess rreessuullttaattss
Le LBT a ete lance sur ma machine perso., une machine de classe
Pentium tournant Linux que j'ai assemblee moi-meme et que j'utilise
pour ecrire ce HOWTO. Voici le compte-rendu LBT pour ce systeme :
LINUX BENCHMARKING TOOLKIT REPORT FORM
CPU
==
Vendor: Cyrix/IBM
Model: 6x86L P166+
Core clock: 133 MHz
Motherboard vendor: Elite Computer Systems (ECS)
Mbd. model: P5VX-Be
Mbd. chipset: Intel VX
Bus type: PCI
Bus clock: 33 MHz
Cache total: 256 KB
Cache type/speed: Pipeline burst 6 ns
SMP (number of processors): 1
RAM
====
Total: 32 MB
Type: EDO SIMMs
Speed: 60 ns
Disk
====
Vendor: IBM
Model: IBM-DAQA-33240
Size: 3.2 GB
Interface: EIDE
Driver/Settings: Bus Master DMA mode 2
Video board
===========
Vendor: Generic S3
Model: Trio64-V2
Bus: PCI
Video RAM type: EDO DRAM
Video RAM total: 2 MB
X server vendor: XFree86
X server version: 3.3
X server chipset choice: S3 accelerated
Resolution/vert. refresh rate: 1152x864 @ 70 Hz
Color depth: 16 bits
Kernel
=====
Version: 2.0.29
Swap size: 64 MB
gcc
===
Version: 2.7.2.1
Options: -O2
libc version: 5.4.23
Test notes
==========
Une charge tres faible. Les tests ci-dessus ont ete executes
avec quelques unes des options specifiques du Cyrix/IBM 6x86 activees
grace au programme setx86. Il s'agit de : fast ADS, fast IORT, Enable DTE,
fast LOOP, fast Lin. VidMem.
RESULTS
========
Linux kernel 2.0.0 Compilation Time: 7m12s
Whetstones: 38.169 MWIPS.
Xbench: 97243 xStones.
BYTE Unix Benchmarks 4.01 system INDEX: 58.43
BYTEmark integer INDEX: 1.50
BYTEmark memory INDEX: 2.50
Comments
=========
Il s'agit la d'une configuration tres stable et dotee de performances
homogenes, ideale pour une utilisation individuelle et/ou developper
sous Linux. Je rendrai compte des resultats obtenus avec un 6x86MX des
que j'aurai reussi a mettre la main sur l'un d'entre eux !
55.. PPiieeggeess eett mmiisseess eenn ggaarrddee eenn mmaattiieerree dd''eevvaalluuaattiioonn ddee ppeerrffoorrmmaanncceess
Apres avoir compile ce HOWTO, j'ai commence a comprendre pourquoi les
mots de "piege" et de "mise en garde" sont si souvent associes a
l'evaluation de performances.
55..11.. CCoommppaarreerr ddeess ppoommmmeess eett ddeess oorraannggeess
Ou devrais-je dire des Apples et des PCs ? (ndt : pour gouter
pleinement toute la finesse de ce jeu de mots, il faut quand meme
savoir que pomme se dit apple en anglais :-) C'est tellement evident
et c'est une controverse tellement eculee que je ne rentrerai pas dans
les details. Je doute que le temps necessaire pour booter un Mac
compare a celui d'un Pentium moyen soit une veritable mesure de quoi
que ce soit. De facon similaire on pourrait parler du boot de Linux
vs. Windows NT, etc... Essayez autant que possible de comparer des
machines identiques a une seule difference pres.
55..22.. IInnffoorrmmaattiioonn iinnccoommpplleettee
Un seul exemple suffira a l'illustration de cette erreur tres
courante. On lit souvent dans comp.os.linux.hardware l'affirmation
suivante : "Je viens tout juste d'enficher le processeur XYZ qui
tourne a nnn MHz et la compilation du noyau prend maintenant i minutes
(ajustez XYZ, nnn et i selon vos besoins). C'est enervant parce
qu'aucune autre information n'est fournie: on ne connait meme pas la
quantite de RAM, la taille du swap, les autres taches qui tournaient a
ce moment la, la version du noyau, les modules selectionnes, le type
de disque dur, la version de gcc, etc...
Je vous recommende d'utiliser le formulaire de compte-rendu LBT,
lequel fournit au moins un cadre informationnel standard.
55..33.. MMaatteerriieell//llooggiicciieell pprroopprriieettaaiirree
Un fabriquant de micro-processeurs bien connu a publie naguere des
resultats de benchmarks produits avec une version speciale et
personnalisee de gcc. Considerations ethiques mises a part, ces
resultats sont denues de toute signification, en effet, la totalite de
la communaute Linux aurait utilise la version standard de gcc. Le meme
genre de consideration vaut aussi pour le materiel proprietaire.
L'evaluation de performances est beaucoup plus utile quand elle va de
pair avec du materiel sur etagere et du logiciel gratuit (au sens
GNU/GPL).
55..44.. PPeerrttiinneennccee
On parle de Linux, non ? On devrait donc faire abstraction des
benchmarks produits sous d'autres systemes d'exploitation (ceci est
une instance particuliere de la comparaison des pommes et des oranges
mentionnee plus haut). Si l'on se propose d'evaluer la performance
d'un serveur Web, on pourra aussi se dispenser de citer la performance
FPU et toute autre information non-pertinente. Dans de tels cas, moins
c'est plus. Enfin, vous n'avez pas non plus besoin de parler de l'age
de votre chat, de votre humeur pendant que vous procedez a une
evaluation de performances, etc...
66.. FFAAQQ
QQ11..
Existe-t-il un indice de performances specifique aux machines
Linux ?
AA.. Non, Dieu merci personne n'a encore invente de mesure du type
Lhinuxstone (tm). Meme si c'etait le cas, ca n'aurait pas
beaucoup de sens : les machines Linux sont utilisees pour des
taches tellement differentes allant des serveurs Web lourdement
charges aux stations graphiques pour utilisation individelle.
Aucun facteur de merite ne peut decrire les performances d'une
machine Linux dans des situations si differentes.
QQ22..
Alors, pourquoi ne pas choisir une douzaine de metriques pour
resumer la performance de diverses machines Linux ?
AA.. Ca serait une situation ideale. J'aimerai voir ca devenir une
realite. Y-a-t-il des volontaires pour un pprroojjeett dd''eevvaalluuaattiioonn ddee
ppeerrffoorrmmaanncceess ssoouuss LLiinnuuxx ? Avec un site Web et une base de
donnees de rapports bien concus, complete et en ligne ?
QQ33..
AA.. Les BogoMips n'ont strictement rien a voir avec la performance
de votre machine. Voir le BogoMips Mini-HOWTO.
QQ44..
Quel est le "meilleur" benchmark pour Linux ?
AA.. Ca depend completement de quel aspect des performances d'une
machine Linux on souhaite mesurer. Il y a des benchmarks
differents pour faire des mesures reseau (taux de transfert
soutenu sous Ethernet), des mesures de serveur de fichiers
(NFS), de bande passante, de performance CAO, de temps de
transaction, de performance SQL, de performances de serveur Web,
de performance temps-reel, de performance CD-ROM, de performance
sous Quake (!), etc ... Pour autant que je sache, aucune suite
de benchmarks supportant tous ces tests n'existe pour Linux.
QQ55..
Quel est le processeur le plus rapide pour Linux ?
AA.. Le plus rapide pourquoi faire ? Si on est plutot oriente calcul
intensif, alors un Alpha a frequence d'horloge elevee (600 MHz
et ca continue a grimper) devrait etre plus rapide que n'importe
quoi d'autre, du fait que les Alphas ont ete concus dans cette
optique. D'un autre cote, si vous voulez vous constituer un
serveur de news tres rapide, il est probable que le choix d'un
sous-systeme disque rapide et de beaucoup de RAM vous menera a
de meilleures ameliorations de performances qu'un changement de
processeur (a prix constant).
QQ66..
Laissez-moi reformuler la derniere question, alors : y-a-t-il un
processeur qui soit le plus rapide dans les applications d'usage
general ?
AA.. C'est une question delicate mais la reponse est simple : NON.
On peut toujours concevoir un systeme plus rapide meme pour des
applications d'usage general independamment du processeur.
D'ordinaire, en conservant tous les autres parametres a leur
valeur nominale, des frequences d'horloge plus elevees
permettent d'obtenir de meilleures performances (ndt : surtout
si on parle de systemes synchrones :-) et aussi plus de maux de
tete. Si vous retirez un vieux Pentium a 100 MHz d'une carte-
mere (laquelle n'est pas souvent) upgradable, et que vous le
remplaciez par un Pentium 200 MHz MMX vous devriez sentir une
difference de performances notable. Bien sur, pourquoi se
contenter de 16 MB de RAM ? Le meme investissement aurait ete
fait de facon encore plus avisee au profit de quelques SIMMs
supplementaires...
QQ77..
Donc la frequence d'horloge du processeur a une influence sur la
performance d'un systeme ?
AA.. La plupart des taches sauf les boucles de NOP (qui sont
d'ailleurs supprimees a la compilation par les compilateurs
modernes) une augmentation de la frequence d'horloge permettra
d'obtenir une augmentation lineaire de la performance. Des
applications gourmandes en ressources CPU et tres petites
(pouvant donc tenir dans le cache L1 : 8 ou 16KB) verront leur
performances augmenter dans la meme proportion que
l'augmentation de la frequence d'horloge. Cependant les "vrais"
programmes comportent des boucles qui ne tiennent pas dans le
cache primaire, doivent partager le cache secondaire (externe)
avec d'autres processus et dependent de composants externes (ndt
: pour les E/S) beneficieront d'un gain de performance beaucoup
moins important. Tout ceci parce que le cache L1 fonctionne a
la meme frequence d'horloge que le processeur, alors que la
plupart des caches L2 et des autres sous-systemes (DRAM par
exemple) tournent en asynchrone a des frequences plus basses.
QQ88..
D'accord, dans ce cas, une derniere question sur le sujet : quel
est le processeur presentant le meilleur rapport
prix/performance pour une utilisation d'usage general sous Linux
?
AA.. Definir une "utilisation d'usage general sous Linux" n'est pas
chose facile ! Etant donnee une application quelconque, il y a
toujours moyen de determiner quel processeur du moment detient
le meilleur rapport prix/performance pour ladite application.
Mais les choses changent si rapidement a mesure que les
fabriquants diffusent de nouveaux processeurs, que dire "le
processeur XYZ a n MHz est le choix du moment" serait forcement
reducteur. Cependant, le prix du processeur n'est pas
significatif dans le cout d'un systeme complet que l'on assemble
soi-meme. Donc, la question devrait plutot etre "comment
maximize-t-on le rapport performance/cout d'une machine donnee
?" Et la reponse a cette question depend en grande partie des
besoins en performance minimale garantie et/ou du cout maximal
de la configuration que l'on considere. Il arrive parfois que le
materiel sur etagere ne permette pas d'atteindre les besoins en
performance minimale garantie que l'on souhaite obtenir et que
des systemes RISC couteux soient la seule alternative viable.
Pour une utilisation personnelle, je recommende une
configuration equilibree et homogene du point de vue de la
performance globale (et maintenant debrouillez vous pour deviner
ce que j'entends par equilibre et homogene :-); le choix d'un
processeur est une decision importante, mais pas plus que celle
du disque dur et de sa capacite, celle de la quantite de RAM,
celle de la carte graphique, etc...
QQ99..
Qu'est-ce qu'une amelioration significative des performances ?
AA.. Je dirais que tout ce qui est sous 1% n'est pas significatif
(pourrait etre decrit comme marginal). Nous autres, simples
mortels, avons du mal a percevoir la difference entre 2 systemes
dont les temps de reponses sont distants de moins de 5% . Bien
sur, certains evaluateurs de performances - plutot de la
tendance integriste - ne sont aucunement humains et vous
raconteront, en comparant 2 systemes dont les indices de
performances sont de 65.9 et de 66.5, que ce dernier est
indubitablement plus rapide.
QQ1100..
Comment puis-je obtenir une amelioration significative de
performance a moindre cout ?
AA.. Puisque le code source complet de Linux est disponible, un
examen attentif et une re-conception algorithmique de procedures
cles peuvent, dans certains cas, deboucher sur des ameliorations
jusqu'a un facteur 10 en terme de performance. Si l'on est sur
un projet commercial et qu'on ne souhaite pas plonger dans les
trefonds du code source du systeme, ll''iimmpplliiccaattiioonn dd''uunn
ccoonnssuullttaanntt LLiinnuuxx eesstt nneecceessssaaiirree. Cf. le Consultants-HOWTO.
77.. CCooppyyrriigghhtt,, rreemmeerrcciieemmeennttss eett ddiivveerrss
77..11.. CCoommmmeenntt ccee ddooccuummeenntt aa--tt--iill eettee pprroodduuiitt
La premiere etape a consiste en la lecture de la section 4 "Writing
and submitting a HOWTO" de l'index des HOWTOs ecrit par Greg Hankins.
Je ne savais absolument rien au sujet de SGML ou de LaTeX mais, apres
avoir lu divers commentaires a propos de SGML-Tools, j'etais tente
d'utiliser un paquetage de generation de documentation automatique.
Cependant l'insertion manuelle de directives de formattage me
rappelait l'epoque ou j'assemblais a la main un moniteur 512 octets
pour un processeur 8 bits aujourd'hui disparu. J'ai donc fini par
recuperer les sources de LyX, les compiler et je m'en suis servi dans
son mode LinuxDoc. Une association chaudement recommendee : LLyyXX eett
SSGGMMLL--TToooollss.
77..22.. CCooppyyrriigghhtt
Le Linux Benchmarking HOWTO est place sous le regime du copyright (C)
1997 par Andre D. Balsa. Les HOWTO Linux peuvent etre reproduits en
totalite ou en partie et distribues en totalite ou partiellement sur
n'importe quel support physique ou electronique, a condition que ce
message de copyright soit conserve dans toutes les copies. La
redistribution commerciale est permise et encouragee; cependant
l'auteur aimerait etre prevenu de l'existence de telles distributions.
Toute traduction (ndt : dont acte :-), tout travail derive ou
peripherique incorporant un HOWTO Linux doit etre couvert par ce
message de copyright.
C'est-a-dire qu'il ne vous est pas possible de produire un travail
derive a partir d'un HOWTO et d'imposer des restrictions
supplementaires sur sa distribution. Des exceptions a cette regle
pourront etre accordees sous certaines conditions; veuillez contacter
le coordinateur des HOWTO Linux a l'adresse specifiee ci-apres.
Pour etre bref, nous souhaitons promouvoir la dissemination de cette
information par autant de canaux que possible. Cependant, nous
souhaitons garder un droit de copyright sur les HOWTOs et aimerions
etre averti de tout projet de redistribution les concernant.
Si vous avez des questions, veuillez contacter Greg Hankins, le
coordinateur des HOWTOs Linux, a
[email protected] par e-mail ou
au +1 404 853 9989 par telephone.
(ndt : pour cette version francaise du document original, il semble
plus approprie de contacter Eric Dumas, coordinateur des traductions
de HOWTOs dans la langue de Moliere par e-mail a l'adresse
[email protected]).
77..33.. NNoouuvveelllleess vveerrssiioonn ddee ccee ddooccuummeenntt
De nouvelles version du Benchmarking-HOWTO Linux seront mises a
disposition sur sunsite.unc.edu et sur les sites mirroir (ndt : citons
ftp.lip6.fr pour nous autres francophones). Ce document existe aussi
sous d'autres formats tels que PostScript et dvi, et sont disponibles
dans le repertoire other-formats. Le Benchmarking-HOWTO Linux est
egalement disponible pour des clients WWW comme Grail, un butineur Web
ecrit en Python. Il sera aussi poste regulierement sur
comp.os.linux.answers.
77..44.. RReettoouurr
Les suggestions, corrections, et ajouts sont desires. Les
contributeurs sont les bienvenus et en seront remercies. Les incendies
(ndt : est-ce une traduction acceptable de flame ?) sont a rediriger
sur /dev/null.
Je serai toujours joignable a
[email protected].
77..55.. RReemmeerrcciieemmeennttss
David Niemi, l'auteur de la suite Unixbench, s'est avere etre une
source inepuisable d'informations et de critiques (fondees).
Je veux aussi remercier Greg Hankins, le coordinateur des HOWTO Linux
et l'un des principaux contributeurs au paquetage SGML-tools, Linus
Torvalds et toute la communaute Linux. Ce HOWTO est ma facon de
renvoyer l'ascenseur.
77..66.. PPaarraavveenntt
Votre kilometrage peut varier et variera sans doutes. Soyez conscients
que l'evaluation de performances est un sujet tres sensible et une
activite qui consomme enormement de temps et d'energie.
77..77.. MMaarrqquueess ddeeppoosseeeess
Pentium et Windows NT sont des marques deposees d'Intel et de
Microsoft Corporations respectivement.
BYTE et BYTEmark sont des marques deposees de McGraw-Hill, Inc.
Cyrix et 6x86 sont des marques deposees de Cyrix Corporation.
Linux n'est pas une marque deposee, et esperons qu'elle ne le sera
jamais.