La Lanterne Rouge

Warning: Geek Inside

Les aventures d'un 486 DX2 au XXIème siècle (4ème partie)

- Posted in Sans catégorie by

J'étends ma parenthèse ouverte lors de la partie précédente et continue l'évaluation des performances de cette fameuse machine.

Si vous avez raté le début :

Les aventures d'un 486 DX2 au XXIème siècle (1ère partie)

Les aventures d'un 486 DX2 au XXIème siècle (2ème partie)

Les aventures d'un 486 DX2 au XXIème siècle (3ème partie)

Let's benchmark

Je ne pouvais pas en rester là, sans avoir de chiffres "objectifs" à me mettre sous la dent qui me permettraient d'évaluer la puissance de la bête, et tant qu'à faire, la comparer à d'autres plus récentes de mon cheptel personnel. Je me suis donc mis à la recherche d'un programme de benchmark pour GNU/Linux pour tester au minimum le CPU et la RAM. Et je suis tombé sur sysbench. Les premières tentatives de compilation de la dernière version sur ma Slackware 8.1 se sont soldées par des échecs : les versions des paquets gcc et libtool (entre autres) étant trop anciennes. C'est finalement la dernière version de la série 0.3.x (0.3.4) sortie en 2005 qui s'est laissée binairiser.

À toute fin utile, il me faut mentionner que j'ai dû désactiver les "warning as error" avec

$ export CFLAGS="-Wno-error"

avant de lancer

$ ./configure --without-mysql

pour pouvoir compiler l'intégralité du paquet sans erreur.

Voici les 3 tests que j'ai effectués :

  • Processeur :
$ sysbench --test=cpu --num-threads=2 --max-requests=2 --cpu-max-prime=1000000 run

Ce test lance deux threads en parallèle qui vont rechercher chacun les nombres premiers de 3 à 1 000 000 deux fois de suite. Le résultat obtenu sera le temps mis pour compléter cette tâche.

  • RAM :
$ sysbench --test=memory --num-threads=24 --max-time=20 run

Ce test lance 24 threads qui vont écrire des données en RAM durant 20 secondes. Le temps obtenu sera le débit moyen en Mo/s.

  • I/O :
$ sysbench --test=fileio --num-threads=2 --file-test-mode=rndrw --file-fsync-all --file-num=16 --file-total-size=100M prepare
$ sysbench --test=fileio --num-threads=2 --file-test-mode=rndrw --file-fsync-all --file-num=16 --file-total-size=100M run

Ce test lance deux threads qui vont chacun lire 62 Mo de données et écrire 94 Mo de données aléatoires dans 16 fichiers préalablement préparés (me demandez pas pourquoi 62 et 94 alors qu'il y a marqué "100M" en paramètre...). Un appel à fsync() est effectué après chaque écriture de manière à forcer l'écriture réelle sur le disque et ne pas fausser les performances avec les caches. C'est donc sensé donner une idée des performances générales d'I/O. Le résultat obtenu sera le temps mis pour compléter cette tâche.

Les résultats

Voici les résultats obtenus dans un joli tableau récapitulatif (cliquer sur l'image pour la visualiser en taille originale) :

sysbench_ancient-usul-warrick-freeseed.png

Comme vous pouvez le constater, j'ai effectué ces mêmes tests avec trois autres machines dont j'ai déjà parlé sur ce blog :

  • Warrick : une modeste machine de 2003 à base d'Athlon XP 1900+ @ 1,6Ghz et équipée de 1 Go de RAM. Elle me sert principalement pour bidouiller sans craindre de perdre des données. J'ai dessus deux disques SATA de 80 Go de récupération (dont un de portable, donc en 5400 rpm). Elle tourne sous Arch Linux 32 bit (kernel 3.6).
  • Usul : mon petit serveur maison qui revient très souvent ici. Il est équipé d'un Athlon 230 @ 1,6GHz, de 2 Go de RAM et de 2 disques SATA en 7200 rpm. Il tourne sous Debian 6 "Squeeze" 64 bit (kernel 2.6.32).
  • Freeseed : une machine de bureau typique de 2009, équipée d'un processeur Athlon II X2 245 @ 2,9GHz et de 4 Go de RAM. Les tests ont été effectués sous Arch Linux 64 bit (kernel 3.6). Elle jouera ici la référence "haute" de ce comparatif, même si sa config n'est plus toute jeune.

Les six premières colonnes contiennent les résultats obtenus par sysbench et sont formées de 3x2 colonnes : pour chaque test la colonne de gauche contient le résultat "brut" et celle de droite le résultat transformé pour être exploitable dans un comparatif (plus cette valeur est élevée et meilleures sont les performances). La référence pour chacun des tests est Usul à qui j'ai attribué un score de 100 (sur fond gris dans le tableau).

Je pense que les résultats sont un peu décevants de par leur fiabilité mais l'idée y est et je m'en contenterai. Détaillons un peu.

Processeur

processeur-intel-486.jpgOn remarque aisément le gouffre que représente l'écart des générations entre Ancient et les trois autres machines. Le petit 486 est ici 40 fois plus lent que l'Atom de première génération, et plus de 400 fois plus lent que l'Athlon ! Pour exprimer cette idée d'une autre manière, nous pourrions dire qu'il faudrait 400 processeurs 486 DX2 tels que celui-là pour obtenir la puissance de calcul d'un seul Athlon (lui-même aujourd'hui incapable de rivaliser avec un des derniers Core i7). Et encore, c'est une simplification grossière car le test porte ici sur des calculs "simples" alors que chaque génération de processeur apporte son lot d'optimisations pour la réalisation de calculs complexes nécessaires par exemple au décodage de flux vidéo et audio en temps réel (plusieurs additions simultanées en un seul cycle d'horloge, plusieurs multiplications, combinaisons des deux, etc.), optimisations qui ne sont pas présentes sur les 486.

En outre, l'écart qui sépare d'un côté Freeseed (Athlon II X2) et de l'autre Usul (Atom) et Warrick (Athlon XP) est aussi explicable par le fait que le premier est un vrai dual-core alors que le second est un monocore avec HyperThreading, et le troisième un simple monocore. Comme deux instances du test sont lancées en parallèle, il est évident que le dual-core est ici à son avantage, étant capable d'exécuter réellement les deux threads en parallèle, et donc de diviser le temps de réalisation par deux (à fréquence égale).

220px-RAM_n.jpg

RAM

Ici aussi les paliers sont bien visibles, mais au-delà de ça le chiffre frappant est quand même le débit de la mémoire sur cette vieille architecture : à peine plus de 3 Mo/s. Le moindre disque dur d'aujourd'hui même en 4200 rpm (si, ça existe encore) obtient des débits au moins 6 fois plus élevés ! On compare tout de même du mécanique à de l'électronique pure ! Le rapport avec Freeseed et son Athlon est cette fois-ci de plus de 330, et plus de 100 sur les autres machines plus modestes.

I/O

Ce test m'a posé quelques soucis au niveau de l'interprétation des résultats obtenus. D'une part, le rapport de 20 entre Ancient et Usul (et son disque dur récent en 7200 rpm) est réaliste. Le rapport de 2,5 avec les performances de Warrick est également explicable par le fait que le disque de Ancient n'est pas aussi vieux que le reste de la machine (un Seagate Medalist 4321 en 5400 rpm d'environ 1999) et que Warrick est équipé d'un disque dur de 2,5" en 5400 rpm ayant au moins 6 ans.

D'autre part, les résultats bruts obtenus par Freeseed semblent totalement aberrants au vu de la configuration de la machine et de son âge (valeurs en rouge dans le tableau). Je n'arrive pas à expliquer avec certitude leur origine mais leur reproductibilité est confirmée, et ce, depuis différents environnements (Ubuntu 10.04 32bit, Arch Linux 64bit, Suse Linux 64bit). En l'état je préfère donc les ignorer car ils ne sont nullement représentatifs des performances observées en utilisation réelle.

Conclusion

En considérant que les résultats de sysbench sont représentatifs des performances générales des machines testées (hypothèse de travail), on constate de nets écarts dans les générations des composants.

Le CPU est et a toujours été un élément central des PC et on observe bien une évolution drastique de ses capacités sur deux décennies : d'après les résultats bruts on peut parler d'une capacité de calcul accrue d'un facteur 500. En réalité, comme je l'ai mentionné précédemment, le crible des nombres premiers met en jeu des calculs simples que seule l'augmentation de fréquence peut accélérer (et le multi-coeur, si plusieurs threads sont lancés en parallèle). Mais les processeurs modernes possèdent de nombreuses capacités supplémentaires par rapport à ceux des années 90 qui ne sont pas exploitées par le test (caches supplémentaires et plus larges, pipelining, circuits dédiés pour certains calculs, etc.). L'augmentation de la puissance finale est donc certainement largement supérieure à celle observée ici.

La mémoire suit la même courbe et se rapproche fortement des évolutions de performances des processeurs associés. Le débit aujourd'hui ridicule de 3 Mo/s (soit tout de même 24 millions de bits par seconde) obtenu sur Ancient était certainement impressionant lorsque les disquettes de 3,5" plafonnaient à 45 Ko/s en écriture (soit 66 fois plus lentement, avec 360 000 bits par seconde). Mis en perspective avec le débit des RAM récentes comme celle présente sur Freeseed, qui dépasse le Go/s (soit plus de 8 milliards de bits par seconde, un chiffre difficile à appréhender), on saisit mieux l'évolution gigantesque accomplie dans le domaine en 20 ans.

On termine avec les performances d'I/O (entrées/sorties pour les anglophobes), qui progressent plus modéremment par rapport aux deux autres valeurs, ce qui prouve encore une fois – et cela n'étonnera personne – que le stockage mécanique n'est clairement plus capable de suivre le rythme des composants purement électroniques. L'arrivée des SSD il y a maintenant quelques années est donc une évolution logique pour rattraper le retard pris par les périphériques de stockage durant plus de 10 ans. Mais on ne retirera pas si facilement aux bons vieux disques leur plus grande qualité : le coût au Go qui, malgré les colères de mère Nature, poursuit sa chute inexorable depuis plus de 50 ans.

Il est enfin important de préciser que l'OS n'est pas non plus pour rien dans les résultats et que le fait d'utiliser des kernels différents peut également avoir une influence non négligeable sur les indices de performance obtenus. Il fallait quand même le signaler.

À l'origine des bits : les électrons

Qu'en est-il à présent de la consommation électrique ? C'est la question finale que je me suis posée et à laquelle j'ai répondu grâce à mon Conserve Insight de Belkin (présenté il y a quelques temps ici-même).

Rien de très étonnant pour moi dans les résultats, cela correspond bien à mes expectations : 24W en idle et 28W en charge (par pics durant le boot). On était encore au temps où le moniteur (cathodique, seule religion ayant cours à l'époque) consommait plus que la tour elle-même.

Ces chiffres sont évidemment très bas par comparaison à ce que l'on peut obtenir d'un PC "moyen" actuel (il a été, un jour, un PC "moyen"). Je ne retrouve des chiffres similaires qu'avec mon serveur Sihaya tournant sur un Atom D510, et dont la faible consommation est un des objectifs d'Intel sur cette famille de processeurs.

Faisons à présent le rapport consommation/performances avec les chiffres obtenus pour déterminer l'efficacité énergétique de chacune des configurations.

ratio_puissance-sysbench.png

La première colonne reporte juste les résultats obtenus plus haut. La seconde colonne contient les puissances maximales observées sur chacune des machines (lors d'un test séparé). Il faut lire la dernière colonne comme ceci : "Combien faut-il de Watts pour obtenir un point sysbench ?". Le score le plus faible est évidemment le meilleur, celui qui détermine quelle machine utilise le courant consommé le plus efficacement.

Sans appel, Freeseed remporte le combat haut la main, étant plus de 50 fois plus efficace qu'Ancient. Usul est second, quand même deux fois moins efficace que le vainqueur. Son score brut est néanmoins très correct et est bien représentatif de sa génération. Warrick accuse son âge et obtient la troisième place. Ancient finit bon dernier avec une efficacité exécrable mais également représentative de sa génération.

Attention : dans un ordinateur, surtout âgé, il ne faut pas négliger l'influence de la qualité de l'alimentation sur le courant absorbé. Comme je l'avais mentionné dans un article précédent, l'alimentation de Warrick par exemple est une sombre bouse qui consomme déjà 5W machine éteinte. Il est alors plus que probable que son efficacité en charge n'atteigne même pas 70%. Une partie importante du courant part alors tout simplement... dans la nature. Ou plutôt dans mon appartement, sous forme de chaleur inutile (sauf l'hiver), et n'a aucun rapport avec la consommation des composants de la machine. Les résultats sont donc là-aussi à prendre avec des pinces à barbecue tant les biais peuvent être importants.

Je ferme ici ma gigantesque parenthèse qui consistait à évaluer les performances de ma vénérable machine et à les comparer à ses petites-cousines, et je reprendrai le récit de mes péripéties, de l'installation d'un serveur X et d'une souris... Toute une histoire.

Les aventures d'un 486 DX2 au XXIème siècle (5ème et dernière partie)