Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Ne jetez pas votre vieux PC : le noyau Linux s'apprête à booster ses performances en jeu

Sur un PC, l'ordonnanceur du système (le scheduler en anglais), c'est ce petit bout du noyau qui décide quelle tâche tourne sur quel cœur du processeur, et pendant combien de temps. Plus il est malin, plus la machine est fluide.

Peter Zijlstra, l'un des développeurs historiques du noyau Linux, vient de proposer un patch baptisé "sched: Flatten the pick" qui réorganise la façon dont l'ordonnanceur attribue les priorités. Et les résultats sur le gaming, surtout sur du vieux matériel, sont étonnants.

Pour le test, le développeur a sorti un PC d'époque : un Intel Core i7-2600K, processeur de 2011, accompagné d'une carte graphique AMD Radeon RX 580. Le tout fait tourner Shadows: Awakening, un jeu disponible sur la boutique GOG, lancé via Lutris et Proton, l'écosystème qui permet de faire tourner les jeux Windows sous Linux. Et là, surprise.

Avant le patch, le jeu pédalait à environ 4 images par seconde au minimum et 48 en moyenne. Après application, on monte à 20 images par seconde au minimum et 57 en moyenne. Le temps maximum entre deux images, l'autre indicateur clé pour la fluidité, passe de 107 millisecondes à 37. On passe d'injouable à correct. Sur une machine de 2011, c'est presque un miracle.

Le patch touche à la gestion des cgroups, des conteneurs de processus qui regroupent et hiérarchisent les tâches, sur les systèmes multi-cœurs. Plusieurs niveaux de sélection étaient empilés, et le patch les "aplatit" pour gagner en réactivité.

Les vieux processeurs ont moins de cœurs et moins de marge, donc chaque mauvaise décision de l'ordonnanceur coûte cher. Sur un processeur récent avec dix ou douze cœurs, on ne le remarque presque pas. Sur un quadri-cœur d'il y a quinze ans, ça se voit immédiatement à l'écran.

Attention quand même, on n'est pas encore au point d'être intégré dans le noyau Linux officiel. Il reste des relectures et des validations avant que le code finisse en production. C'est la version 2 du patch, donc la discussion technique a déjà bien avancé.

Pour les distributions Linux orientées jeu, qui chassent la moindre milliseconde gagnée, ce genre de patch est exactement le type d'amélioration qu'on suit de près.

Bref, si vous traînez un vieux PC qui peine, un futur noyau Linux pourrait bien lui offrir une deuxième jeunesse pour le jeu.

Source : Itsfoss

Le scheduler Linux qui consulte les astres

Et si je vous disais qu'il existe un scheduler Linux qui prend ses décisions en fonction de l'astrologie. Non, c'est pas une blague, le premier avril c'est pas avant quelques jours. Ce scheduler s'appelle scx_horoscope et c'est un vrai module BPF qui se charge dans le noyau et qui décide quel processus a droit au CPU selon la position des planètes dans le zodiaque. Et ça fonctionne pour de vrai !

En gros, le principe c'est ça : chaque planète du système solaire se voit attribuer un domaine. Le Soleil gère les processus critiques (PID 1, init), la Lune s'occupe de vos shells et éditeurs de texte, Mars prend en charge la compilation et l'encodage vidéo, et Jupiter veille sur vos bases de données. Les positions sont alors calculées en temps réel grâce au crate Rust astro, donc oui, c'est de la vraie mécanique céleste, pas un random(). En fait, le binaire calcule les éphémérides géocentriques pour déterminer dans quel signe se trouve chaque planète à l'instant T.

L'outil en train de déterminer le bulletin météo cosmique de votre CPU

Et c'est là que ça devient franchement tordu car chaque signe du zodiaque est associé à un élément (Feu, Air, Eau, Terre) qui modifie les priorités CPU. Votre compilateur tourne pendant que le Soleil est dans le Bélier ? Hop, boost x1.5 pour les tâches CPU-intensive. Par contre, si c'est un signe d'Eau qui domine... 0.6x sur la compilation. Pas de bol ! Et si en plus une planète est en rétrograde (genre elle recule dans le ciel), tous les time slices sont divisés par deux. Votre make -j8 se fera par exemple interrompre deux fois plus souvent, parce que Vénus fait sa diva.

Le module utilise sched_ext, le framework du kernel Linux (6.12 minimum) qui permet de coder des ordonnanceurs en espace utilisateur via eBPF. Et c'est pas un proof-of-concept bidon, car ça charge vraiment dans le noyau. Un cargo build --release, un sudo devant, et hop votre machine tourne au rythme des astres. Y'a même un mode --cosmic-weather qui affiche un bulletin météo cosmique avec les phases de la Lune et les positions planétaires du moment.

Notez par exemple que la pleine lune booste les tâches interactives de 40%. Donc si vous tapez du code à 3h du mat' un soir de pleine lune, votre terminal sera techniquement plus réactif. Coïncidence ? Bah non, c'est Cyber Madame Soleil qui gère !

Le projet propose aussi un flag --ophiuchus pour activer le 13e signe du zodiaque (celui que l'Union Astronomique Internationale reconnaît mais que les astrologues ignorent royalement qui s'appelle en français Serpentaire).

Ce projet est donc clairement à classer dans la catégorie "parce qu'on peut" mais le niveau technique est loin d'être ridicule puisque c'est codé en Rust, en C pour la partie BPF, que ça embarque de vrais calculs d'éphémérides, et une intégration kernel qui tient la route. Et les issues sur le GitHub sont un festival... quelqu'un a par exemple demandé le support des éclipses solaires, tandis qu'un autre veut du chaos pendant les éruptions solaires. Internet à son meilleur ! Top of the top de l'indispensable inutile !

Bref, si vous voulez que Jupiter booste vos bases de données ou votre génération de site statique, foncez . Et merci à Camille Roux pour le partage !

❌