Pourquoi est-ce important: Le noyau Linux inclut une ancienne astuce pour gérer les incompatibilités possibles dans les premières implémentations ACPI. De nos jours, l’astuce n’est plus nécessaire et ne fait qu’empirer les choses pour les processeurs AMD en pénalisant les performances. Un patch devrait bientôt arriver.
L’architecture Zen incroyablement réussie a bouleversé le marché des processeurs modernes, amenant AMD au sommet de la course aux performances et offrant aux utilisateurs un concurrent indispensable à la longue durée de vie d’Intel. Il existe cependant un domaine informatique dans lequel les processeurs AMD souffrent toujours d’une baisse de performances – même s’il n’y a aucune raison réelle pour justifier cet état de fait.
Lors de l’utilisation d’un système d’exploitation basé sur Linux, les processeurs AMD ralentissent alors qu’ils ne le devraient pas. La raison de ce comportement étrange remonte à 2002, lorsque la prise en charge de la norme Advanced Configuration and Power Interface (ACPI) a été ajoutée pour la première fois au noyau open source. Les implémentations ACPI antérieures devaient faire face à certains problèmes de compatibilité, les développeurs devaient donc anticiper certains comportements étranges, tels que les chipsets passant à un état inactif un peu plus tard que prévu.
Le problème a forcé les développeurs susmentionnés à introduire une “opération d’attente factice” dans le noyau, forçant une opération de lecture de données redondante avant que le processeur ne puisse s’arrêter complètement avec la commande STPCLK #. L’opération d’attente factice a été ajoutée à Linux en 2002, et elle est toujours là même si les processeurs basés sur l’architecture Zen n’ont plus besoin de cette solution de contournement.
Le pire, c’est que l’opération d’attente factice ralentit le processeur, comme l’a expliqué l’ingénieur AMD Prateek Nayak dans un correctif récent du noyau: dans des charges de travail spécifiques sur les systèmes Linux, Nayak a déclaré “une quantité importante de temps est passée dans l’opération factice qui est incorrectement comptabilisée comme résidence C-State”. Les états C sont une fonctionnalité ACPI conçu pour économiser de l’énergie lorsque le processeur n’a pas besoin de rester éveillé, et les opérations d’attente factices peuvent faire en sorte qu’un processeur AMD aille encore plus loin dans la hiérarchie de l’état C, ralentissant ainsi son retour à des opérations complètement éveillées.
En testant différentes versions du noyau (sur un système Zen3 à double socket), Nayak a découvert que son correctif pour supprimer l’opération d’attente factice apportait une amélioration remarquable dans banc performances – d’une augmentation de 1 390 % du débit minimum en Mo/s à une augmentation moyenne de 51 % par rapport au noyau de base.
Le code vieux de plusieurs décennies pour la compatibilité ACPI n’a plus besoin de rester sous Linux, donc le correctif de Nayak sera probablement ajouté à une prochaine version du noyau – peut-être même la version 6.0 devrait être livrée la semaine prochaine, juste avant l’introduction de Rust langage de programmation sous Linux 6.1 tel que décidé par Penguin Maximo Linus Torvalds.
En ce qui concerne les processeurs Intel, l’opération d’attente factice ne semble pas poser de problème de performances même si un correctif urgent a déjà été soumis.