En aout dernier, AMD a profité du Computex 2018 pour dévoiler sa deuxième génération de puces Ryzen ThreadRipper. Ces nouveaux processeurs sont basés sur l’architecture Zen+, gravés en 12 nm et exploitent toujours les dies Zepplin des CPU ThreadRipper de première génération. L’écurie des rouges avait officialisé quatre nouvelles références ciblant les marchés du HEDT (High-End Desktop) et du SHED (Super High-End Desktop) qui venaient compléter son catalogue de processeurs Ryzen incluant déjà les modèles 1950X et 1920X. Il s’agissait des Ryzen ThreadRipper 2990WX, 2970WX, 2950X et 2920X.
Selon AMD, les nouveaux Ryzen ThreadRipper 2 flanqués du suffixe WX ciblent le calcul professionnel et des activités telles que la modélisation 3D complexe, le montage, l’enregistrement, la compilation, la mastérisation, le rendu ou la création d’effets visuels. Les nouvelles déclinaisons avec le suffixe X seraient davantage destinées aux enthousiastes et aux joueurs. Le Ryzen ThreadRipper 2990WX, un CPU grand public orienté HPC, et le Ryzen ThreadRipper 2950X, un CPU grand public orienté joueur extrême, représentent à l’heure actuelle les fers de lance de la firme de SunnyVale respectivement sur le SHED et le HEDT. Mais un problème reste toujours d’actualité : comment tirer profit au maximum des performances des processeurs Ryzen Threadripper d’AMD ;?
Des tests effectués l’année dernière par le site Phoronix ont montré que Linux parvenait à mieux tirer parti des processeurs Ryzen Threadripper d’AMD comparé aux différentes versions de Windows 10 Pro et ou Windows Serveur. L’écart de performance est généralement compris entre 10 et 20 % en faveur de Linux, suivant les scénarios d’usage, à quelques exceptions près (un benchmark HTTP basé sur le langage Go et l’encodage vidéo notamment).
Cette situation résulterait du caractère immature ou des lacunes de l’ordonnanceur de Windows : la partie du noyau en charge de décider quel fil d’exécution de quel processus utilise quels cœurs du processeur et à quels moments. Un fonctionnement inadapté de ce composant peut entraîner des pertes de performances inutiles.
Rappelons par ailleurs que l’OS de Microsoft utilise un ordonnanceur préemptif avec des priorités : chaque fil d’exécution dispose de sa propre priorité ;; le fil qui a la plus haute priorité est exécuté en priorité, quitte à arrêter l’exécution d’un autre fil avant qu’il ait terminé (c’est la préemption). Ainsi, un processus interactif aura, par exemple, une priorité plus grande qu’un processus qui effectue en majeur partie des calculs ou des opérations d’entrée-sortie : quand l’utilisateur clique sur un bouton, il veut que l’application réagisse de suite, pas quand tous les calculs à effectuer sont réalisés.
L’ordonnanceur de Windows a évolué au fil des années, en passant d’une seule file de fils d’exécution prêts à être exécutés (Windows 2000) à une file par processeur (Windows 2003). La solution suivante a été d’utiliser une file par processeur (des files réservées aux processus qui ont une affinité avec un cœur de calcul en particulier) plus une file partagée pour les tâches interactives (Windows 8.1).
En parallèle, Microsoft a commencé à implémenter des mécanismes d’équité à l’ordonnanceur de Windows entre les utilisateurs (Windows 7), en plus de la priorité. De cette manière, si un utilisateur utilise énormément les ressources de calcul avec des fils d’exécution à haute priorité, les autres utilisateurs (qui lancent des tâches avec une priorité moindre) ne devraient pas trop le ressentir. Un autre gros apport de Windows 7 a été la gestion plus fine du verrouillage des ressources : au lieu d’un verrou global, chaque ressource est verrouillée indépendamment des autres. Windows 10 a continué ces améliorations avec le partitionnement des groupes de processeurs : certains processus ont un accès exclusif à un groupe de processeurs/cœurs, que les autres processus ne pourront plus utiliser.
Finalement, avec Windows 10 pour ARM, une dernière fonctionnalité a dû être ajoutée au système d’exploitation : l’ordonnancement hétérogène. Pour garantir une bonne réactivité et économiser la batterie, Windows ordonnance les processus les moins importants sur les cœurs les moins puissants (l’API Windows propose d’ailleurs un mécanisme pour marquer un processus comme peu important). Ce n’est que grâce à toutes ces techniques et à leurs raffinements successifs que Windows arrive à gérer autant de cœurs, dans des architectures hétérogènes.
Les problèmes rencontrés avec les CPU AMD basés sur Zen, Zen + ou Zen 2 sous Windows semblent tous être dus à la mise en œuvre des processus de meilleure assignation de nœuds dans un système de traitement de données à architecture de mémoire non uniforme (NUMA) par l’ordonnanceur. Le terme NUMA fait également référence à une méthode d’accès mémoire dans un système multitâche permettant d’harmoniser le fonctionnement des threads pour accéder au pool mémoire disponible.
AnandTech a précisé que Microsoft avait déjà mis en place un correctif pour Windows destiné aux environnements à double NUMA. Toutefois, pour les environnements > 2 NUMA, à l’image des CPU Threadripper et EPYC pouvant actuellement intégré jusqu’à huit die, le correctif serait inadapté.
Signalons au passage que le logiciel CorePrio permet d'activer une option « NUMA Dissociater », permettant aux applications de gérer plus intelligemment la charge de travail au niveau des cœurs et des threads du CPU avec des plateformes ThreadRipper ou EPYC sous Windows. Sans cela, certains logiciels ne parviennent pas à exploiter à 100 % le potentiel des processeurs nouvelle génération d’AMD et on peut observer des baisses de performances.
AMD a confié à AnandTech travailler avec Microsoft pour améliorer les performances des CPU Ryzen Threadripper et EPYC sur les plateformes Windows. La firme de Sunnyvale a déclaré avoir ouvert des tickets de support et de mise à jour avec l’équipe compétente chez Microsoft afin que les problèmes évoqués soit corrigés au plus vite.
Source : Phoronix test 1, Phoronix test 2, AnandTech
Et vous ?
Qu’en pensez-vous ?
Cette initiative arrive t-elle à point nommée ou un peu tard, sachant qu'AMD a sorti ses CPU ThreadRipper et EPYC depuis deux ans déjà ?
L'optimisation des CPU ThreadRipper pour Windows pourrait-elle vous inciter à acquérir des machines équipées de ce type de CPU ?
Voir aussi
À quel point le noyau Windows peut-il se mettre à l'échelle de centaines de cœurs ? Comment l'ordonnanceur peut-il fonctionner avec 896 cœurs ?
AMD lance son Threadripper 2990WX, le CPU de bureau le plus puissant au monde, capable de monter jusqu'à 6 GHz avec ses 32 cœurs/64 threads actifs
EPYC Rome, la seconde génération de CPU serveur d’AMD basés sur Zen 2 et le 7 nm avec 64 cœurs/128 threads, alerte rouge pour Intel sur le HPC ?
AMD au CES 2019 lance ses processeurs Ryzen 3000 avec sa seconde génération d'APU pour mobiles et ses premiers CPU mobile pour Chromebooks
AMD et Microsoft travaillent ensemble pour améliorer les performances des CPU Ryzen Threadripper et EPYC
Sur les plateformes Windows
AMD et Microsoft travaillent ensemble pour améliorer les performances des CPU Ryzen Threadripper et EPYC
Sur les plateformes Windows
Le , par Christian Olivier
Une erreur dans cette actualité ? Signalez-nous-la !