Je propose ici un ensemble d'outils pour l'évaluation de performances sous Linux. C'est la version préliminaire d'un vaste environnement d'évaluation de performances pour Linux, il est destiné à être amélioré et à voir ses fonctionnalités étendues. Prenez le pour ce qu'il vaut, c'est-à-dire une proposition. Si vous pensez que cette suite de test n'est pas valable, prenez la liberté de m'envoyer (ndt : à l'auteur et non au traducteur, merci :-) vos critiques par e-mail et soyez sûrs que je serai heureux d'intégrer les changements que vous aurez suggéré dans la mesure du possible. Avant d'entamer une polémique, lisez ce HOWTO et les documents cités en référence : les critiques informés sont les bienvenus, les critiques stériles ne le sont pas.
Elles sont dictées par le bon sens, tout simplement :
J'ai sélectionné 5 suites des benchmarks différentes en évitant autant que possible les recouvrements dans les tests :
Pour les tests 4 et 5, "(résultats partiels)" signifie qu'une partie seulement des résultats produits est prise en compte.
./xbench -timegoal 3>
results/name_of_your_linux_box.out
.
Pour générer l'indice xStones, il nous faudra encore lancer un script
awk; la façon la plus simple de le faire étant de taper
make summary.ms. Jetez un coup d'oeuil au fichier summary.ms : l'indice
xStone de votre système est dans la dernière colonne de la ligne
contenant le nom de votre machine -- nom que vous aurez spécifié
pendant le test../Run -1
(tournez chacun des tests une fois). Vous trouverez les résultats dans le
fichier ./results/report.
Calculez la moyenne géométrique des indices de EXECL THROUGHPUT,
FILECOPY 1, 2, 3, PIPE THROUGHPUT, PIPE-BASED CONTEXT SWITCHING, PROCESS
CREATION, SHELL SCRIPTS et SYSTEM CALL OVERHEAD.(ndt : la moyenne géométrique se définit comme la racine n-ième du produit des n termes considérés)
La suite de benchmarks idéale tournerait en quelques minutes, comprendrait des benchmarks synthétiques testant chaque sous-système séparément et des benchmarks applicatifs fournissant des résultats pour différentes applications. Elle produirait aussi automatiquement un rapport complet et éventuellement l'enverrait par e-mail à une base de données centrale sur le Web.
La portabilité 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 déclinaisons possibles (i386, Alpha, Sparc...).
Si quelqu'un a la moindre idée concernant l'évaluation de performances réseau au moyen d'un test à la fois simple, facile d'emploi, fiable, et dont la mise en oeuvre prendrait moins de 30 minutes (configuration et exécution), s'il vous plait contactez-moi.
Au-delà des tests, la procédure d'évaluation de performances n'aurait pas été complète sans un formulaire décrivant la configuration matérielle utilisée lors de leur exécution. Le voici donc : (il se conforme aux directives prescrites dans la FAQ de comp.benchmarks) :
(ndt : le formulaire en question n'a délibérément pas été traduit, de façon à ce que l'auteur de ce HOWTO puisse automatiser leur traitement en vue de maintenir une base de données de résultats. 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 présent dans ce formulaire que pour de possibles
interprétations des résultats, et tant que tel, il est optionnel.
Il pourrait cependant constituer la partie la plus importante de votre
compte-rendu, tout particulièrement si vous faites de l'évaluation
de performances comparative.
______________________________________________________________________
Le test des performances réseau est un véritable défi en soi puisqu'il implique au moins deux machines: un serveur et une machine cliente. Pour cette raison ce genre de test nécessite deux fois plus de temps pour être mis en place, il y a plus de variables à contrôler, etc... Sur un réseau Ethernet, il me semble votre meilleure option est le paquetage ttcp. (à developper)
Les tests SMP sont un autre défi, et tout test conçu spécifiquement pour un environnement SMP aura des difficultés à s'avérer valide dans des conditions d'utilisation réelles parce que les algorithmes qui tirent parti du SMP sont difficiles à développer. Il semble que les versions du noyau Linux les plus récentes (> 2.1.30 ou pas loin) feront du scheduling (ndt : ordonnancement de thread ou de processus) à grain fin ; je n'ai pas plus d'information que ça pour le moment.
Selon David Niemi, "... shell8 de la suite Unixbench 4.01 fait du bon travail en matière de comparaison de matériel/SE similaires en mode SMP et en mode UP."
(ndt : SMP = Symetric Multi-Processing, UP = Uni-Processor)