Cache-Aware Scheduling 2.0 : Le patch Linux qui booste MySQL de 360% sur les serveurs multi-chiplets
Cache-Aware Scheduling 2.0 : Le patch Linux qui booste MySQL de 360% sur les serveurs multi-chiplets
Imaginez un serveur capable de traiter 3,6 fois plus de transactions par seconde sans changer de matériel, simplement en optimisant la façon dont le noyau Linux gère les caches. C’est exactement ce que promet le nouveau patch Cache-Aware Scheduling (CAS) 2.0, développé par Hygon, un fondeur chinois spécialisé dans les architectures x86 sous licence AMD Zen. Cette innovation, encore en phase de test, pourrait révolutionner les performances des bases de données comme MySQL sur les machines multi-chiplets, tout en restant transparente pour les utilisateurs finaux.
Mais comment fonctionne ce magicien des performances ? Et surtout, quels sont les gains réels attendus ? Plongeons dans les détails techniques de cette avancée majeure pour les infrastructures Linux.
Le Cache-Aware Scheduling : une révolution silencieuse dans le noyau Linux
Le Cache-Aware Scheduling (CAS) n’est pas une nouveauté absolue. Il a été introduit pour la première fois dans le noyau Linux 7.2, grâce aux travaux des ingénieurs d’Intel (Tim Chen, Chen Yu et Peter Zijlstra). L’idée de base est simple : regrouper les tâches qui partagent des données sur le même domaine de cache de dernier niveau (LLC, Last Level Cache). Pourquoi ? Parce que les accès aux données en cache sont bien plus rapides que les accès à la mémoire vive ou au disque. En réduisant les cache misses (les échecs de cache où la donnée n’est pas présente), on améliore considérablement les performances globales du système.
Concrètement, si deux processus communiquent fréquemment entre eux, les placer sur des cœurs partageant le même LLC réduit les transferts de données entre caches, ce qui se traduit par moins de latence et plus de puissance de calcul disponible pour d’autres tâches. Une optimisation purement logicielle, donc, qui ne nécessite aucun changement matériel.
Les limites du CAS classique et l’émergence du CAS hiérarchique
Cependant, le CAS traditionnel a une faiblesse majeure : il ne fonctionne que dans le cadre d’un unique domaine de cache. Autrement dit, si votre charge de travail dépasse la capacité d’un seul LLC, l’ordonnanceur (scheduler) n’a plus la possibilité de regrouper les tâches de manière optimale. Les processus se dispersent alors sur des cœurs qui ne partagent plus le même cache, annihilant toute la localité des données. C’est un problème particulièrement criant sur les architectures modernes, où les CPU sont souvent composés de plusieurs chiplets (des modules indépendants assemblés pour former un processeur).
Prenons l’exemple du Hygon C86-7490, un processeur x86 multi-chiplet qui intègre quatre modules distincts, chacun avec son propre LLC. Sur une telle architecture, la charge de travail peut facilement dépasser la capacité d’un seul cache partagé. C’est là que le nouveau patch de Hygon entre en jeu : il étend le CAS pour permettre un regroupement hiérarchique des tâches, capable de s’adapter dynamiquement à la topologie du CPU et à la taille de la charge.
Des gains spectaculaires : +360% sur MySQL, +49% sur Hackbench
Les résultats des benchmarks réalisés par Hygon sont tout simplement impressionnants. Voici les gains annoncés avec le nouveau CAS hiérarchique :
- +360% de transactions par seconde sur MySQL : Un bond spectaculaire qui pourrait faire passer une base de données de quelques milliers à plusieurs dizaines de milliers de requêtes par seconde, sans toucher au matériel.
- +49% sur Hackbench : Un outil de benchmarking conçu pour tester les performances du noyau Linux en simulant des charges de travail multithreadées.
- +20% sur Schbench : Un autre benchmark axé sur les performances des systèmes de files d’attente, souvent utilisé pour évaluer la réactivité des serveurs.
Ces chiffres ne sont pas anodins. Ils démontrent que le CAS hiérarchique peut transformer radicalement les performances des serveurs modernes, surtout ceux équipés de processeurs multi-chiplets comme ceux de Hygon ou d’AMD (qui utilise également des architectures chiplet avec ses Ryzen et EPYC).
À noter que ces gains ne sont observés que sur des topologies multi-domaines, c’est-à-dire des machines avec plusieurs LLC distincts. Sur un laptop classique avec un seul LLC, l’impact sera quasi nul. Les serveurs haut de gamme, en revanche, pourraient en tirer un avantage colossal.
Comment ça marche ? Le CAS hiérarchique expliqué simplement
Le patch de Hygon introduit une nouvelle couche d’abstraction dans l’ordonnanceur Linux. Au lieu de se limiter à un seul domaine de cache, le CAS hiérarchique peut :
- Regrouper les tâches par niveau de cache : Les processus partageant des données sont placés sur des cœurs qui partagent le même LLC de premier niveau, puis de second niveau, et ainsi de suite, selon la hiérarchie du CPU.
- S’adapter dynamiquement : Si la charge de travail change, l’ordonnanceur peut ajuster le regroupement des tâches pour maintenir une localité optimale, même si la topologie du CPU est complexe (plusieurs chiplets, plusieurs niveaux de cache).
- Éviter la dispersion des données : En garantissant que les tâches communicantes restent proches physiquement, le patch réduit les cache misses et les transferts de données coûteux entre caches éloignés.
Cette approche est particulièrement adaptée aux architectures modernes, où les CPU sont de plus en plus fragmentés en modules indépendants (chiplets) pour des raisons de coût, de rendement et de scalabilité. Les processeurs comme l’AMD EPYC ou le Hygon C86-7490 en sont des exemples parfaits.
Intégration future : un patch prometteur mais pas encore officiel
Pour l’instant, ces patches sont encore en phase de test. Ils ont été postés sur la mailing list du noyau Linux, mais ne sont pas encore intégrés au code source officiel. Hygon travaille en étroite collaboration avec la communauté open source pour peaufiner l’implémentation et s’assurer qu’elle est compatible avec les différentes architectures x86.
Si le patch est finalement accepté, il pourrait devenir une norme dans les noyaux Linux futurs, au même titre que le CAS classique. Les administrateurs système et les développeurs pourraient alors en bénéficier sans effort supplémentaire, simplement en mettant à jour leur noyau.
En attendant, il est déjà possible de tester ces patches sur des machines compatibles (comme le C86-7490 de Hygon) pour évaluer les gains réels dans des environnements de production. Une opportunité à ne pas manquer pour les entreprises cherchant à maximiser l’efficacité de leurs infrastructures Linux.
Conclusion : une avancée majeure pour les serveurs Linux
Le Cache-Aware Scheduling 2.0 de Hygon représente une avancée technologique majeure pour les serveurs Linux, surtout ceux équipés de processeurs multi-chiplets. En permettant un regroupement hiérarchique des tâches, ce patch optimise l’utilisation des caches et réduit drastiquement les cache misses, ce qui se traduit par des gains de performance spectaculaires : jusqu’à 360% sur MySQL, un chiffre qui parle de lui-même.
Bien que ces patches ne soient pas encore intégrés au noyau Linux officiel, leur potentiel est énorme. Ils pourraient devenir un standard pour les infrastructures modernes, offrant une optimisation gratuite et transparente des performances. Pour les entreprises et les administrateurs système, c’est une raison de plus de surveiller de près les évolutions du noyau Linux et les contributions de fondeurs comme Hygon.
En attendant, si vous gérez un serveur multi-chiplet et que vous cherchez à booster ses performances, gardez un œil sur ces patches. Ils pourraient bien être le secret pour tirer le meilleur parti de votre matériel… sans dépenser un centime.
Et vous, seriez-vous prêt à tester ce patch sur vos serveurs ? Partagez vos retours d’expérience en commentaire !
Source : https://korben.info/cache-aware-scheduling-linux-hygon.html