En 2002, une solution de contournement pour un problème affectant des puces AMD et avec la gestion de l'énergie avait été ajoutée au noyau Linux. Il s'avère que ce vieux correctif est toujours en vigueur avec des systèmes AMD modernes, et à l'origine dans certains cas d'une baisse des performances.
Cette curiosité a été mise en lumière par l'ingénieur Prateek Nayak qui travaille chez AMD et contribue au noyau Linux. Il explique que la solution de contournement implémentée peut réduire les performances de processeurs à architecture Zen.
Le contournement ramène aux débuts du support dans le noyau Linux de l'ACPI (Advanced Configuration and Power Interface) pour la configuration et la gestion de l'alimentation des composants sous l'égide du système d'exploitation. C'était à l'époque dans le cadre du remplacement de l'APM (Advanced Power Management).
Retour vers le passé
Un bug avait été découvert avec des ordinateurs équipés de processeurs AMD Athlon et utilisant des chipsets VIA. The Register explique que lorsque le noyau Linux envoyait un signal afin de mettre un cœur de processeur en idle pour un fonctionnement au ralenti, il pouvait s'écouler un certain temps avant une prise en compte.
La mesure de contournement a consisté en l'ajout d'instructions de lecture I/O factices de sorte que le processeur ne continue pas de fonctionner alors qu'il était censé se mettre en veille. Elle a ainsi permis sur des machines problématiques d'améliorer la compatibilité et la gestion de l'énergie.
Sauf que ce contournement est devenu superflu avec le temps ou du moins avec des processeurs AMD modernes. Il devient même nuisible pour les performances et pour l'exécution de certaines charges de travail spécifiques sur Linux.
Résolution attendue dans le noyau Linux 6.0
C'est ce qu'a mis en évidence Prateek Nayak alors qu'il étudiait le comportement du noyau avec l'outil IBS (Instruction-Based Sampling) d'AMD pour une mesure des performances et avec la microarchitecture AMD Zen3.
Il évoque une " quantité importante de temps " passée dans l'opération fictive, et au final une dégradation des performances sur les charges de travail basculant rapidement d'une phase d'activité à une phase en idle. La faute à un état C-State plus profond pour le processeur qui est recommandé.
La bonne nouvelle est qu'un patch salvateur doit se retrouver dans le noyau Linux 6.0 dont la sortie interviendra la semaine prochaine. Le patch d'AMD a même évolué vers un autre patch d'un ingénieur d'Intel permettant de limiter la solution de contournement d'origine avec ses opérations fictives aux anciens systèmes.