Selon un rapport de Phoronix, un nouveau planificateur de processeur est en cours de développement pour les systèmes d’exploitation Linux, ce qui réduit la latence du système et améliore les performances dans les scénarios de faible charge. Le nouveau planificateur, connu sous le nom de Nest, est conçu pour concentrer les charges de travail légèrement filetées sur le moins de cœurs de traitement possible, dans le but de maintenir les fréquences de suralimentation à leur maximum aussi longtemps que possible.
Cette stratégie est très différente de la plupart des planificateurs de CPU utilisés aujourd’hui, qui sont optimisés pour la saturation multicœur. Cette stratégie est excellente en théorie, car elle répartit uniformément autant de tâches sur autant de cœurs que possible, mais en raison des lacunes architecturales des processeurs modernes, cette stratégie n’est pas la meilleure utilisation des ressources du processeur.
Le comportement de la vitesse d’horloge sur les processeurs de micropuces modernes a radicalement changé au cours de la dernière décennie. Dans le passé, tout ce que vous aviez vraiment était une seule vitesse d’horloge de base que la puce utiliserait pour les applications faibles, moyennes et lourdes, ainsi qu’un algorithme de suralimentation turbo très simple qui engagerait une fréquence spécifique dans les charges de travail moyennes ou lourdes tant qu’il y en avait assez marge thermique et de puissance à revendre.
Mais de nos jours, le comportement de la fréquence du processeur est devenu beaucoup plus compliqué, les puces pouvant fonctionner à une quantité presque infinie de vitesses d’horloge différentes, ainsi que plusieurs niveaux d’états de veille dans lesquels les cœurs peuvent entrer lorsqu’ils sont sous-utilisés.
Ces nouvelles fonctionnalités sont incroyables pour augmenter l’efficacité, mais elles peuvent introduire un décalage indésirable causé par des retards dans les réglages de la vitesse d’horloge du processeur. Un processeur ne peut pas sortir du mode veille instantanément ; il a besoin de temps pour se réveiller.
Nest résout ces problèmes en donnant la priorité aux cœurs les plus récemment utilisés dans un système qui fonctionnent déjà à des vitesses d’horloge turbo maximales à partir de travaux antérieurs. De cette façon, Nest peut continuer à fournir du travail aux cœurs qui fonctionnent déjà à leurs horloges de fonctionnement les plus élevées pour contrer tout retard d’ajustement de la vitesse d’horloge et maintenir les performances du processeur aussi élevées que possible.
Nest le fait en « imbriquant » des cœurs dont il sait qu’ils sont activement utilisés ou ont été récemment utilisés, et pense que ces cœurs seront utiles dans un proche avenir. Nest le fait avec deux clusters qu’il appelle le « Nid principal » et le « Nid de réserve ». Le nid principal est l’endroit où résident tous les cœurs actifs et les cœurs actifs prévus pour les charges de travail légères à modérées. Le nid de réserve est l’endroit où se trouvent tous les noyaux inutilisés.
Nest ajoutera ou supprimera activement des cœurs du nid principal si nécessaire et concentrera tous les travaux légers et modérés sur ces cœurs. Il enverra même un ping à certains cœurs pour s’assurer qu’ils ne s’endorment pas s’il y a un léger moment d’indisponibilité. Nest n’amènera les cœurs résidant dans le nid de réserve dans le nid principal que si les cœurs actifs ne peuvent pas faire le travail efficacement ou pas du tout.
Fondamentalement, Nest est suffisamment intelligent pour savoir quels cœurs, selon lui, seront utiles dans un avenir proche, pour des travaux futurs. Nest aurait fourni une augmentation des performances de 10% à 2x pour les charges de travail légères à modérées sur les ordinateurs de bureau AMD, les serveurs AMD et les serveurs Intel.
Il sera intéressant de voir comment ce planificateur se déroule sous Linux. Techniquement, Windows 10 et 11 ont une partie de ce comportement pour les processeurs AMD Ryzen, où le planificateur de tâches donnera la priorité à des cœurs physiques spécifiques pour les charges de travail légèrement filetées. Mais Nest semble être un planificateur beaucoup plus avancé et capable, qui agit de manière beaucoup plus fluide et n’est pas limité par les propriétés de cœurs spécifiques.
Espérons que nous pourrons le voir en action un jour prochain dans un système Linux réel, mais pour l’instant, il fait toujours l’objet de recherches.