![](https://www.developpez.com/images/logos/linus-torvalds.png)
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 ?
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
Voir aussi
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)
![:fleche:](https://www.developpez.net/forums/images/smilies/fleche.gif)