- Laversion RC-1 est apparue juste quinze jours après la sortie du noyau stable précédent. Linus a reconnu que le noyau 2.6.21 avait connu une gestation difficile et il espère que cette RC-1 annonce un progrès sur ce plan (traduction libre): «Je pense (et j'espère) que cela ne va pas être aussi douloureux que les gros changements du code des timers du noyau 2.6.21. Bien qu'il y ait ici aussi des changements importants (...) cela semble assez solide.»
- Laversion RC-2 a continué sur cette voie d'une version solide et bien debuggée et Linus a rappelé la règle qui interdit d'ajouter des nouvelles fonctions à ce stade du développement (traduction libre): «N'essayez même pas d'envoyer autre chose que des corrections de bugs ! Je pense que la situation actuelle semble raisonnablement bonne pour le noyau 2.6.22.»
- La sortie de laversion RC-3 le 25 mai a donné l'occasion à Linus d'écrire un de ses petits bijoux humoristiques dont il a le secret. Il a lancé un appel pour que les gens téléchargent et testent cette RC-3 au lieu d'aller à la plage (traduction libre): «Nous sommes vendredi soir et les USA se préparent à un long week-end de trois jours, souvent considéré ici comme le début officiel de l'été. Donc que peut faire un nerd blanc comme un bidet ? Vous ne pouvez pas aller à la plage parce que les gens normaux vont rigoler en vous voyant et vont vous jeter du sable à la figure. Mais vous _pouvez_ faire quelque chose : vous pouvez télécharger le dernier noyau RC-3 et sourire d'un air suffisant en sachant que vous faites tourner la toute dernière merveille sur votre machine. Et tout d'un coup, cela n'a plus d'importance que ce soit l'été parce que vous pouvez rester dans votre sous-sol aux stores fermés à vous faire bronzer à la chaude lumière de votre écran LCD plutôt qu'à la dure lumière du jour. Donc ne vous inquiétez plus de ces dangereux rayons ultra-violets et prenez votre vitamine D sous la forme prévue par Dieu (et l'industrie pharmaceutique) : des petites pilules facilement avalables. Les plages sont très surfaites de toute manière, le sable s'introduit dans le ventilateur des ordinateurs portables et en un clin d'oeil plus rien ne fonctionne.
Puissiez vous avoir un bel été.» - La versionRC-4 s'est contentée de corriger divers bugs et régressions et, dix jours plus tard, Linus s'est félicité d'avoir trouvé le temps de sortir laRC-5 en dépit de lamonstrueuse flame-war GPLv2/GPLv3 ayant eu lieu sur la liste de diffusion.
- Le 24 juin est apparue la-RC6 et le premier juillet la-RC7 qui semble satisfaire Linus (traduction libre): «Nous devrions être dans une très bonne situation. Le flot des patchs a vraiment ralenti et la liste de régression s'est beaucoup réduite.»
- Enfin laversion finale a été annoncée le dimanche 8 juillet et Linus s'est interrogé dans son courriel pour savoir si il était vraiment nécessaire de publier une liste complète des changements (un gros fichier de plus d'une centaine de milliers de lignes) alors que presque tout le monde utilise directement le gestionnaire de code sourceGit pour consulter cette liste. C'est donc sans doute la dernière fois que ce fichier récapitulatif des changements (changelog) sera publié séparément.
- Le noyau 2.6.22 inclut une toute nouvellecouche wifi plus propre et plus performante. Elle a été initialement écrite par la sociétéDevicescape (sous le nom d'Advanced Datapath Driver) avant d'êtrelibérée en mai 2006 et adaptée par leshackers Linux au cours de ces derniers mois. Parmi les progrès, on note une implémentation complètement intégrée duWEP, duWPA, du couplage (bridging) des canaux, de la qualité de service (avec priorisation de lavoix sur IP), du support802.11g, du code de debugging...etc
Auparavant l'ancienne couche wifi était assez "sale" et de nombreux pilotes de cartes avaient réécrit certaines fonctions dans leur coin au lieu d'utiliser la couche générique du noyau. La nouvelle couche Devicescape étant bien plus complète et propre, cela va permettre d'adapter tous ces pilotes pour éviter au maximum la duplication du code et simplifier l'écriture des nouveaux pilotes. - On trouve également unecoucheFirewire complètement réécrite afin d'avoir un code plus petit, plus simple et plus maintenable, tout en conservant la compatibilité au maximum avec l'existant. L'API a été adaptée et le code passe de plus de 30000 ligne pour l'ancienne couche à moins de 8000 lignes dans cette nouvelle couche Firewire. Les quatre interfaces existantes pour les programmes en espace utilisateur (userspaceABI) ont fusionné afin de laisser place à une seule interface améliorée (la compatibilité est tout de même maintenue grâce aux bibliothèques libraw1394 et libdc1394).
- Le mécanismeeventfd de notification des évènements est inclus dans cette version 2.6.22. Cet ajout est la conclusion d'une longue controverse et un exemple quasi-parfait du mode de développement hautement compétitif qui caractérise le noyau Linux. En ce sens cet épisode mérite que l'on s'y arrête quelque peu.
En décembre 2006, la situation semblait claire puisque le mécanisme générique proposé par Evgeniy Polyakov, Kevent, semblait la solution qui allait s'imposer. Il en était à savingt-sixième version car les développeurs voulaient prendre tout leur temps avant d'introduire une nouvelle API qu'il faudra maintenir indéfiniment. En dépit de cette prudence, on pouvait penser que l'inclusion dans la branche principale n'était qu'une question de maturation, d'autant que kevent avait reçu le soutien résolu d'Ulrich Drepper, le mainteneur de GlibC. Pourtant, Davide Libenzi ne l'entendait pas de cette oreille et il a proposé une autre solution, eventfd, basée uniquement sur des descripteurs de fichiers (file descriptors) et qui évite d'introduire une nouvelle API. Cette stratégie nécessite la création des appels systèmes signalfd et timerfd et, si elle sacrifie la "généricité" de kevent, elle est plus simple et plus UNIX dans l'âme (car basée sur la philosophie du "tout est fichier"). Avec eventfd, on peut donc continuer à utiliser read(), select() et poll() comme on le faisait auparavant.
Après des échanges enflammés sur la liste de diffusion du noyau et uneargumentation très tranchée d'Ulrich Drepper en faveur de kevent, l'opinion majoritaire penchait néanmoins pour eventfd quand un nouveau concurrent, pollfs, estapparu au dernier moment. Son auteur, Davi Arnaut voulait mettre tout le monde d'accord mais son code a été durement critiqué et il n'a pas changé fondamentalement la donne. Après un dernier baroud d'honneur d'Ulrich Drepper le mécanisme de notification eventfd a finalement été introduit dans le noyau 2.6.22. La communauté Linux a donc fait le choix d'un outil simple à l'inverse, par exemple, de FreeBSD qui a privilégié, aveckqueue, le caractère très générique du fonctionnement au prix d'une plus grande complexité. - Continuant son combat pour un support aussi universel que possible, le noyau Linux accueille une nouvelle architecture de processeur.Blackfin est un microprocesseur à architectureRISC développé par Intel et Analog Devices, Inc (ADI) pour le marché de l'embarqué. C'est un processeur hybride (mi-CPU, mi-DSP) qui fait le pari du support complet sous Linux afin d'élargir son marché. Unsite web a été mis sur pieds afin de centraliser toutes les ressources relatives à Linux et au logiciel libre.
- Une partie importante du noyau Linux est sonallocateur de mémoire (qui s'occupe de garder en cache de nombreux objets de différentes taille afin de permettre d'allouer la mémoire de façon efficace et rapide). Cet allocateur se nommeSLAB (il existe également une autre version, nommée SLOB, pour l'embarqué) et son code est complexe au point de décourager les contributions. La version 2.6.22 introduit un tout nouvel allocateur de mémoire (portant le nom poétique deSLUB) dont le code est beaucoup plus simple tout en étant plus performant (de 5 à 10%).
Ce projet a été lancé par la sociétéSGI afin d'améliorer le rendement de ses superordinateurs comportant plus de mille processeurs. En effet elle s'est aperçue que SLAB engloutissait sans raison plusieurs gigaoctets de mémoire dans cette configuration extrême et a donc décidé de remédier une bonne fois pour toute à ces défauts en créant un nouvel allocateur plus efficace.
Par défaut, SLUB n'est pas activé (c'est une option lors de la compilation) mais sa présence dans la branche principale du noyau va permettre d'avoir de nombreux retours d'expérience et il a vocation à remplacer complètement SLAB à brève échéance. - UBI (Unsorted Block Images) est un tout nouvel outil présent dans cette version de Linux et qui permet de gérer les périphériques à base demémoire NAND flash. C'est en quelque sorte un équivalent deLVM mais spécialisé dans la mémoire flash (LVM maps logical sector numbers to physical HDD sector numbers, UBI maps logical eraseblocks to physical eraseblocks).
Il permet la répartition des écritures sur toute la mémoire et il tient compte des blocs mémoire défectueux. Il gère également la création de volumes UBI qui peuvent être dynamiquement créés, re-dimensionnés ou supprimés. Un fichier PDF complet sur la conception d'UBI estdisponible ici. - L'ordonnanceurCFQ (Complete Fair Queuing) qui s'occupe de gérer les entrées/sorties a été largement amélioré dans la nouvelle version du noyau Linux. Il peut maintenant détecter des processus qui coopérent entre eux ce qui lui permet de choisir la meilleure queue en attente. De plus Jens Axboe, son mainteneur principal, a choisi de s'inspirer de CFS, le tout nouvel ordonnanceur des processus actuellement développé par Ingo Molnar. L'idée principale est d'abandonner les listes triées par niveau de priorité (linked list per priority level for sorting and service uses) afin d'opter pour desarbres de recherches (rbtree of cfq_queue's, sorted by when to service them). Le concept est donc plus naturel et le fonctionnement de l'ordonnanceur est plus rapide.
Enfin le code de CFQ code a été simplifié en le purgeant d'une bonne partie des fonctions n'étant plus utiles. - L'interfaceutimensat a été ajoutée afin de permettre une précision du niveau de la nanoseconde dans les timestamps des systèmes de fichiers. Jusqu'ici l'interfaceutimes ne proposait qu'une précision limitée à la microseconde.
- Lesupport des sous-types de systèmes de fichiers a été introduit dans le nouveau noyau Linux. Il permet de distinguer facilement les divers système de fichiers en espace utilisateur (basés surFUSE). Ainsi, alors qu'auparavant le noyau ne faisait pas la différence et qu'il était difficile de spécifier le système de fichier utilisé dans son fstab, on peut maintenant mettre une mention bien plus explicite (par exemple "fuse.sshfs").
- Dans la perspective d'une refonte future du code pour obtenir plus de stabilité et de rapidité, les fonctions d'hibernation (suspend to disk) et de veille (suspend to RAM) ont été séparés. Cela va permettre d'analyser plus finement les spécificités de chacune des fonctions et de les optimiser séparément.
- Dans le domaine des réseauxTCP de nouveaux algorithmes de gestion des problèmes de congestion ont étés introduits. On note l'implémentation deYeAH-TCP et celle deTCP-Illinois.
Ces deux algorithmes sont spécialisés dans les réseaux à très grande vitesse (In some scenarios, TCP can only utilize less than 10% of network capacity. So a more efficient modification to TCP, which is called high sped TCP variant by researchers in this area, is needed in high speed networks). - Comme d'habitude un grand nombre de pilotes ont été ajoutés ou améliorés dans ce nouveau noyau Linux (par exemple le pilote IVTV qui permet le support des cartes TunerTV + compression MPEG de marque Connexant) et une multitude d'autres modifications ont trouvé leur chemin. Comme il en a pris l'habitude le site Linux Weekly News propose un article faisant le bilan complet sur les contributeurs de cette version. Onpeut y lire que la différence entre le noyau 2.6.22 et son prédécesseur immédiat est de 6000 patchs (écrits par 885 développeurs différents) ce qui représente 494000 lignes de code ajoutées et 241000 supprimées.
Si on se tourne vers le futur pour deviner ce que contiendront les versions à venir du noyau on peut regarder du cotéd'utrace. C'est un remplaçant du système ptrace qui garde la même interface pour les programmes en espace utilisateur mais qui propose des fonctionsbien plus riches). Ces divers outils de tracing fournissent au processus parent un moyen de contrôler l'exécution d'un autre processus afin de faciliter le débogage (cetarticle détaillé fait le point sur les outils de tracing pour Linux).
Le travail sur le système de fichier de nouvelle générationExt4 se poursuit et la liste desnouvelles fonctionnalités est alléchante (voir aussi cefichier pdf issu du symposium Linux d'Ottawa).
Le patch permettant d'implémenter la fonction de lecture spéculative à la demande (On-demand readahead) continue sa maturation. Cette fonction de lecture spéculative, qui existe depuis longtemps, autorise le chargement à l'avance du contenu d'un fichier que le noyau est en train de lire afin de pouvoir fournir les données plus rapidement aux applications. La nouveauté de ce patch réside bien entendu dans le "à la demande" qui permet d'avoir un code plus simple et plus flexible (ici aussiun papier du symposium Linux est disponible).
Le système de fichier spécialisé dans la mémoire Flash (LogFS) est également développé très activement dans la perspective de l'explosion imminente des disques durs de typeSSD. LogFS est basé sur l'idée que les systèmes de fichiers classiques sont conçus principalement pour des disques magnétiques alors que les disques flash ne nécessitent pas tout le code extrêmement complexe qui tente d'éviter la fragmentation des fichiers. L'approche suivie est donc basée sur une écriture séquentielle des données (log-structured approach) qui, et c'est ce qui constitue la grande différence avecJFFS2, ne nécessite pas de scan complet du volume au montage. Comme un système classique toute la structure est donc gardée en mémoire directement dans le disque ce qui accélère considérablement le mount (sur un systèmeOLPC on passe de 3,3 secondes sous JFFS2 à 60 millisecondes avec LogFS).
Enfin le nouvel ordonnanceur CFS d'Ingo Molnar (évoqué lors de ladépêche sur le noyau 2.6.21) en est à sadix-neuvième version et le temps de l'inclusion dans la branche principale approche à grands pas !
Aller plus loin
- Les nouveautés de Linux 2.6.22(77 clics)
- Le bilan des ajouts 1(62 clics)
- Le bilan des ajouts 2(60 clics)
- Les articles du symposium Linux 2007(64 clics)












