Pour ceux qui utilisent l’outil GNU Make - en particulier comme système de compilation - sachez que les temps de compilation en parallèle sur le même CPU sont sur le point d’être beaucoup plus rapides à partir de la version 5.6 du noyau Linux dont la RC1 est disponible depuis peu. En effet, Linus Torvalds a récemment publié un patch pour le kernel qui promet de diviser par huit le temps nécessaire à la compilation sur les gros CPU qui disposent d’un nombre très élevé de cœurs/threads, tout en garantissant un usage plus efficace et efficient des capacités multithreads de ce dernier. Cette optimisation profite donc surtout aux systèmes embarquant des puces qui, à l’instar du Threadripper 3990X d’AMD avec ses 64 cœurs / 128 threads, disposent d’un très grand nombre de cœurs / threads.
Le « ;nouveau patch ;» optimise la distribution des tâches au processeur et les rendus multithreadés. Il s’appuie en partie sur la correction d’un bogue relatif à l’implémentation du Spinlock et du Scheduler sur Linux. En réalité, ce bogue bien documenté a été corrigé il y a plus de deux ans de cela, mais vu que GNU Make n’avait pas reçu de véritable mise à jour depuis, le patch qui permettait d’effectuer des opérations de lecture non bloquante avec pselect était resté dans les archives.
Le « ;nouveau patch ;» s’appuie également sur des modifications du pipe de GNU Make afin qu’il soit possible d’utiliser des temps d’attente exclusifs pour la lecture ou l’écriture. Linus Torvalds a confié avoir lui-même modifié le code du noyau Linux pour l’implémentation de ce correctif qui est censé améliorer les performances du noyau en lui octroyant plus d’indépendance vis-à-vis de GNU Make. Le code pipe optimisé utilise des files d’attente séparées et des temps d’attente exclusifs pour les écritures et les lectures de données afin d’éviter le problème d’engorgement (les goulots d’étranglement) lorsqu’il y a plusieurs opérations de lectures de données en attente sur un pipe (ou, plus rarement, lorsqu’il y a beaucoup d’opérations d’écriture qui attendent qu’une pipe se libère).
Dans un cas de test simplifié écrit par Linus Torvalds, l’application de ce patch a fait chuter le nombre de commutations de contexte sur le programme de test de 11 millions à seulement 1,2 million. En parallèle, le temps requis pour compléter le test était également largement inférieur au temps initial.
Josh Triplett d’Intel a testé le correctif et a confirmé : « ;Je me suis acharné sur votre correctif du pipe (passage à des files d’attente exclusives) pendant un mois environ, sur plusieurs systèmes différents et je n’ai rencontré aucun problème avec lui. Le patch améliore considérablement les temps de compilation en parallèle sur les grands systèmes (~100 CPU) ;».
Source : Kernel
Et vous ?
Qu’en pensez-vous ?
Voir aussi
La version 5.5 du noyau Linux est disponible avec un support pour les stations de travail SGI Octane et Octane II alimentées par MIPS
Le «bug de l'an 2000» se reproduira en 2038 dans le monde Linux, mais c'est maintenant qu'il faut s'inquiéter selon Jon Corbet
Sortie de la version 5.4 du noyau Linux avec l'ajout d'un mode de verrouillage du noyau, d'une couche de sécurité pour détecter les modifications de fichiers et plusieurs autres améliorations
WireGuard, une application VPN et un nouveau protocole de communication gratuit et open source, a été fusionné dans net-next et est en passe d'être inclus dans la version 5.6 du noyau Linux
Linus Torvalds fait part d'une optimisation importante améliorant considérablement le temps de compilation
Sur Linux avec les CPU embarquant un grand nombre de cœurs comme l'AMD Threadripper 3990X
Linus Torvalds fait part d'une optimisation importante améliorant considérablement le temps de compilation
Sur Linux avec les CPU embarquant un grand nombre de cœurs comme l'AMD Threadripper 3990X
Le , par Christian Olivier
Une erreur dans cette actualité ? Signalez-nous-la !