[gull] Above Meltdown & Spectre

Daniel Cordey dc at pxcluster.com
Thu Feb 8 02:12:51 CET 2018


On 08. 02. 18 01:23, Marc Mongenet wrote:
> Ne confonds-tu pas les "toy" benchmarks (benchmarks synthétiques)
> que sont Whetstone et Dhrystone avec ce que fait SPEC?

Non... mais j'admets que je les mets dans le même panier. C'est 
peut-être un peu fort depuis que SPECInt est un ensemble de programmes 
différents, mais c'est aussi un peu n'importe quoi... on y mélange 
allégrement gcc et du calcul matriciel... Si je reconnais que l'on a un 
peu quitté le monde des benchmarks de trois lignes, ça ne prouve pas 
grand chose et surtout ne donne pas une vision de ce que ça devrait 
faire vraiment. On ne teste plus les opérations sur les entier (ou long 
c'est selon), mais on est en train de tester plus les caches L1, L2 et 
L3 ainsi que l'ALU... et d'autres choses, y compris des instructions 
spécifiques... Dans SPECInt je m'attendrais à trouver le stress des 
quatre opérations de base sur des entiers de différentes tailles... ben 
non... c'est pas ça.

De toute façon il est stupide de tester des trucs comme Whetstone et 
Dhrystone (et son bout d'assembleur !), mais on continue à tester des 
applications très pointues, gcc, bzip, etc. Ce qui donne... le mix de 
tout ces tests mais ne veut pas dire grand chose. A priori, un benchmark 
devrait donner une indication "utile" (voeux pieux) de performance entre 
les CPUs. Au lieu de ça, on a des processeurs qui ont de meilleurs 
résultats que d'autre qui ont pourtant des fréquences d'horloge 
supérieurs. On teste de plus ne plus la taille des caches et leurs 
modes... mais plus personnes ne sait ce que ces benchmarks mesurent 
vraiment. C'est pour cette raison que j'ai étendu ma définition des "toy 
benhmarks"... ils ne servent à rien... à moins que l'on ne décide de 
monter un serveur qui va passer son temps à compiler du code, ou un 
autre à compresser des fichiers.

Spec a aussi défini des benchmarks pour des bases de données, qui ont 
été largement biaisés par certain fournisseurs de DB avec la complicité 
de constructeurs de serveurs. L'introduction de la notion de ratios avec 
le prix par transaction a donné lieu à une nouvelle compétition du 
meilleur couple de tricheur et à la découverte de nouvelles techniques 
de triche. On te monte une infrastructure de plus de 10 millions, 
consommant l'énergie d'une moitié de centrale nucléaire, ça prend 6 mois 
de travail et on te sort un chiffre... 0.010 centime par transaction... 
le marketing s'en empare et te le placarde partout... en l'estampillant 
SPECM*... A côté de ça la LAMAL paraît vachement honnête !!! Mais le 
sgens retiennent ce chiffre.. et l'associe avec DB, sans se rendre 
compte que ce n'est pas ça du tout... Là dedans tu as un paquet de trucs 
cachés comme du Fiber Channel, des disques SSD haut-de-gamme et une 
batterie de routeur Cisco hors de prix... Donc, qu'est-ce que l'on 
mesure vraiment. Ce qui fait que SPECInt devrait maintenant s'appeler 
SPECPotpourri ou SPEC-gcc-perl-gzip-*
> Bien sûr, à force, les fabricants de CPU peuvent trouver
> des trucs pour optimiser outrageusement certains codes source.
> Ces codes source sont remplacés lorsqu'une nouvelle version des
> benchmarks sort.

Exact, c'était une pratique courante dans les années 80 et 90. C'est 
moins le cas maintenant avec Intel qui occupe une position archi 
dominante sur le marché. EN fait, il n'y a plus vraiment de concurrence, 
d'autant qu'AMD est obligé d'émuler l'archaïque jeu d'instruction du 
x-86... (avec le litte-endian). Il n'y a qu'ARM qui se démarque, mais ce 
n'est pas une architecture très différente...

> Il n'y a rien, ni dans Wikipédia ni ailleurs, qui permet d'avancer
> que ces benchmarks minimisent les LOAD/STORE.

C'est clair personne ne va le claironner, surtout pas les constructeurs 
! De plus, les nouveaux tests ne cherchent pas à minimiser quoique ce 
soit (ou très peu). Ils se contentent de mesurer... quelque chose... (on 
ne sait plus trop quoi d'ailleurs) ce qui permet à tout le monde de 
crier victoire.

J'ai hélas jeté plein de documentations spécifiques à HP-PA et à 
l'optimisation des compilateurs il y a quelques années. Ces infos 
dataient des années 80 et je pensais qu'elle seraient disponibles sur 
Internet, mais je me suis aperçu que 95% a disparu et les infos encore 
disponibles sont entachées d'erreurs. Je t'assure, les statistiques ont 
bien été collectée et je t'assure que nous avons tous été surpris. La 
plupart de tests ont été effectuée sur des codes FORTRAN, C et COBOL; 
l'objectig étant de savoir qu'elle étaient les instructions les plus 
utilisées. ENsuite, les gens d'HP Labs ont déterminé qu'elles opérations 
étaient le splus utilisées. Puis, ils ont décortiqués les opérations 
(collectées sur des système CISC) et ont réfléchit comment émuler les 
opérations complexes avec des instructions simple s'exécutant en un seul 
cycle... après petit compromsi pour savoir quelles commandes on allait 
mettre sur le chip en fonction de l'espace nécessaire à chacune. Ce qui 
a donné un jeu d'instruction très différents des travaux effectués sur 
les processeurs sur les processeurs RISC à Stanford et Berkeley. Le 
pipeline était de 5 et c'était un processeur super bien pensé et c'est 
ce qui le différenciait des processeurs MIPS, SPARC principalement (IBM 
suivait une autre voie).

Il est donc fort dommage que personne n'instrumente l'exécution de code 
sur les processeurs actuels. Mais peut-être qu'Intel n'a pas trop envie 
que l'on découvre qu'ils se moquent du monde en nous vendant du vent 
très cher. Le problème est que ce genre d'instrumentation doit être 
implantée dans le CPU lui-même et que seul le constructeur a les clefs. 
Imagine que tu découvres que les fameux processeurs a 32 cores avec leur 
cache L3 soit une gigantesque arnaque vendue à prix d'or... M'étonnerait 
qu'Intel te donne les clefs pour se faire descendre.

dc

	



More information about the gull mailing list