Cet article est en cours de rédaction, pour la partie technique du moins.

Je m’apprête à migrer mon serveur de la machine Germanium 4 , une station Dell T7400 dotée de 2 CPU X5492 cadencés à 3.4 Ghz et 10G de RAM ECC vers un PC de gamer en socket LGA 1150, modifié pour l’occasion. L’ancienne station est puissante et très résiliente mais au prix d’une consommation abominable de 300W en idle

T7400 - Dell

J’ai pu l’expérimenter : ces anciennes stations de travail industrielles sont increvables et quasiment indestructibles. Elle peuvent tourner des dizaines d’années sans nécessiter de maintenance lourde ! La RAM ECC est un avantage certain même si elle chauffe énormément, mais de nos jours les barrettes de mémoire vive ne sont plus aussi fragiles qu’il y a 10 ans. Si on compte le PSU de 1200W et son rendement incertain en plus des deux CPU à 150W de TDP, on se retrouve avec une facture de plus ou moins 30€ à la fin du mois. Un bon gros chauffage.

Même si c’est cher c’est le prix d’un serveur dédié chez OVH, pour une configuration bien en deçà des performances de cette workstation et l’impossibilité de faire évoluer le matériel.

Un processeur pirate à 80Gflop

J’ai longtemps cherché un moyen de faire évoluer cette machine en réduisant drastiquement la consommation, puis je suis tombé sur une vidéo de Linus Sebastian de la chaîne Linus Tech Tips où ce dernier installe un CPU pour ordinateurs portables en boitier BGA (donc soudable au four seulement) dans un socket LGA 1150. Cette étrange compatibilité est rendue possible par l’adjonction d’un PCB supplémentaire entre les billes de soudure et le socket. C’est une manipulation totalement pirate et non prévue par Intel. 

Malheureusement, ces processeurs sont uniquement disponibles pour le marché intérieur chinois car trouvables exclusivement sur taobao.com. Il est cependant  possible de les faire venir facilement en Europe en laissant quelques dollars supplémentaires chez un agent Taobao comme Bhinner, qui se chargera  d’acheter et réexpédier le colis depuis la Chine avec en prime quelques photos.

120€ et deux semaines plus tard :

Cette configuration est idéale pour un serveur personnel, en effet les CPUs mobiles disposent de fonctions étendues d’économies d’énergie sans pourtant sacrifier beaucoup les performances. L’utilisation de la meilleure référence de la gamme i7 – 49xx garantie la présence d’un silicium à haut degré de pureté, capable donc de tenir les 4.00 GHz en charge sans erreurs. De plus, ces processeurs contiennent un die supplémentaire de 128MO de cache L4 appelé Crystal Lake et partagé entre le processeur graphique et les 4 cœurs du CPU. 

En idle, ce CPU affiche 7W. 4 cœurs / 8 thread à 4Ghz (turbo) / 2.8Ghz (base) c’est déjà bien pour 120€, surtout quand ça pompe moins qu’un téléphone qui charge. 

Cependant, il y a quelques manipulations à faire avant d’atteindre les 80 Gflop.

Intel et le throddeling

Par défaut en mode performances (alimentation branchée) et sans charge intensive, le turbo boost surcadence jusqu’à 4.00 Ghz. Mais une fois en charge, la fréquence est progressivement abaissée jusqu’à la fréquence de base et parfois en dessous suivant 3 paramètres :

  • Limitation TDP
  • Limitation en courant drainé
  • Limitation thermique
Ce processeur n’est plus sur une carte mère d’ordinateur portable, nous pouvons donc modifier le paramétrage du turbo boost pour lui permettre de dissiper plus et de drainer plus de courant, sans compromettre les économies d’énergie en idle. Il n’est pas question ici d’overclock, je me focalise sur la stabilité et les performances mais dans le cadre des limitations proposées par Intel. Je conserve donc les marges de sécurité.

L’effet du throddeling est observable lors d’un stress test, malgré une température de 74°C le processeur abaisse la fréquence des cœurs car il estime avaler trop de courant :

Sur un ordinateur portable c’est justifié par l’alimentation externe généralement faiblarde et les capacités limitées des VRMs de la carte mère à fournir de grandes transitoires de courant. Il est possible de repousser cette limite avec Intel XTU sur Windows, sinon il faudrait aller bidouiller les registres MSR avec des outils spécifiques sur Linux. Attention, c’est une manipulation risquée.

La limitation en TDP max permet d’écrêter l’énergie induite dans le refroidisseur, donc de proposer des performances plus linéaires aux usagers des laptops. Nous l’effaçons ici car le refroidisseur utilisé permet largement de passer au dessus des 100Wpeak.

Enfin, la limitation en température (thermal throddeling) est la dernière butée physique atteignable. Il est en effet impossible pour le CPU de passer les 95°C sans risquer des dommages. On exploite le maximum des capacités couplées du CPU / VRM / Refroidisseur quand cette butée est atteinte, c’est pourquoi il est important d’avoir une configuration équilibrée.  

Il est donc possible d’augmenter drastiquement les performances sans overclock, simplement avec un paramétrage fin du turbo boost et avec une carte mère configurée pour économiser l’énergie : 

80 Gflop !
Limiter l'énergie dissipée

Peu de gens savent vraiment comment fonctionne un CPU. 

Comme toutes les puces numériques et plus généralement tous les systèmes physiques, il est soumis à une diminution de l’amplitude des signaux dans la circuiterie logique interne quand la fréquence augmente, c’est un filtre passe bas. C’est visible sur ce diagramme de Bode qui représente l’amplitude de l’horloge d’une puce numérique de chez Microchip en fonction de la fréquence :

Plus la fréquence augmente, plus l’amplitude de la porteuse diminue. Il faut en effet de plus en plus d’énergie pour compenser les pertes dues à l’augmentation de la fréquence de commutation. C’est pourquoi il est en général nécessaire d’augmenter l’offset de tension d’une centaine de mV pour augmenter la valeur des multiplicateurs d’horloges des cœurs, du cache, de la RAM, etc ..

Mais si la tension imposée aux cœurs est plus grande, la consommation de courant et donc la dissipation thermique est plus grande, la température augmente et donc les performances du turbo boost sont affectées.

En abaissant l’offset de 120mV sur les cœurs et le cache et le reste on conserve la même fréquence en turbo boost, donc les mêmes performances pour une diminution de presque 10W du TDP en charge. Ceci devrait être fait en usine mais Intel préfère s’imposer de grandes marges de sécurité. 

Attention cependant en ce qui concerne l’abaissement de tension pour les parties auxiliaires du CPU comme le system agent (uncore) : des erreurs mémoire peuvent apparaître si le contrôleur subit une baisse de tension trop importante. Ces erreurs peuvent être repérées avec un test mémoire au boot comme memtest86 qui devrait retourner une RAM complètement opérationnelle alors que des panic kernel peuvent apparaître pendant l’exécution du serveur.


0 commentaire

Laisser un commentaire