Gnou

Le Blog de Thomas

Logiciels libres, informatique et autres ...

Actualité du noyau #2


Le résumé de l'actualité du noyau de la semaine dernière semblant avoir été apprécié par quelques lecteurs, j'ai essayé de faire de même pour cette semaine. Malheureusement, je me rends compte que je n'aurai certainement pas le temps de continuer toutes les semaines. Peut-être faudrait-il monter un site communautaire francophone où plusieurs rédacteurs pourraient se partager la tâche. D'un autre coté, est-il vraiment nécessaire d'avoir quelque chose de plus que LWN ou KernelTrap ?

Cette semaine:


Depuis le noyau 2.5, il est possible sous Linux de mettre en place des per-process namespace, c'est-à-dire d'offrir aux process des visions différentes de l'espace de nommage (l'arborescence des fichiers). Comme l'explique Jonathan Corbet, le concept vient du système d'exploitation Plan 9 (voir également ce papier).

Par ailleurs, depuis les noyaux 2.4, on peut utiliser l'option --bind de la commande mount qui permet de remonter une partie de l'arborescence à un autre endroit de l'arborescence.

Néanmoins, comme l'explique Ram Pai, les montages «bind» et les espace de nommage sont statiques par nature. Ils créent un snapshot des points de montage courants. Cependant, tous les nouveaux montages et démontages réalisés dans le point de montage originel ne seront pas répercutés dans le nouveau point de montage. Les «shared subtrees» rendent les montages «bind» et les espaces de nommage dynamique par nature. Les montages et les démontages réalisés sous n'importe lequel des réplicats sont répercutés dans les autres. Le développeur annonce dans son courrier électronique que cette fonctionnalité est attendue par des projets tels que FUSE (systèmes de fichiers en espace utilisateur), SeLinux (Security-Enhanced Linux, développé par la NSA), MVFS (multiversions file system, un système de fichiers développé par IBM, et visiblement utilisé par le système de gestion de version propriétaire ClearCase) et autofs (mécanisme permettant le montage automatique).

Ram Pai distingue 4 types de montages, pour lesquels il donne des exemples dans sa documentation:

La documentation donne beaucoup d'autres détails: elle précise la sémantique de toutes les opérations par rapport aux différents types de montage, elle donne plusieurs cas d'utilisation, et propose même un Quiz pour permettre au lecteur de tester sa compréhension de la chose ;-)

Le patch lui-même, découpé en 10 parties, touche bien évidemment le coeur du VFS, en particulier fs/namespace.c et ajoute un nouveau fichier fs/pnode.c.




Bref, on voit bien que les attaques personnelles sont légion, et que la personnalité d'Hans Reiser n'arrange pas les choses. Certains ont même suggéré qu'une autre personne de la société Namesys (gérée par Hans Reiser) s'occupe de dialoguer avec les développeurs du noyau en ce qui concerne l'incusion de ReiserFS. KernelTrap propose également un résumé de la situation.



Plusieurs développeurs se sont montrés sceptiques, indiquant que cela ressemblait ni plus ni moins à ce que fait déjà O'Profile. Pour défendre son outil, Soeren a avancé plusieurs arguments: OProfile ne fonctionne pas en SMP, OProfile ne peut pas extraire de graphe d'appel sans recompiler le noyau, et OProfile dispose d'une interface graphique difficile à comprendre. Il a donc de nouveau mis en avant la simplicité de mise en oeuvre de son outil, mais ses arguments face à OProfile semblent un peu léger: il aurait sans doute été plus simple et plus constructif de contribuer à cet outil existant.

Les autres développeurs ont persisté à demander pourquoi avoir réimplémenté OProfile, et Soeren a indiqué que le module noyau ne représentait que 296 lignes, et que ce n'était pas vraiment ce qui l'intéressait, mais plutôt le code d'analyse et l'interface graphique. Certains ont donc suggéré de brancher l'interface graphique et le code d'analyse de sysprof sur le module noyau OProfile. Une discussion a alors été démarrée sur la liste d'OProfile.



Le patch permet de maintenir une liste des pages swappées, dans une liste ordonnée de la plus récemment utilisée à la moins récemment utilisée et dans un radix tree, une structure de donnée que nous avons évoqué dans le compte-rendu d'une conférence du Linux Symposium 2005 concernant les performances du page cache. En plus de ceci, le patch créé un thread noyau de faible priorité qui sera chargé d'effectuer le préchargement.

Une fois que des pages ont été ajoutés à la liste des pages swappées, un timer est démarré, testant toutes les 5 secondes si certaines conditions sont réunies pour permettre le préchargement de pages swappées. Les conditions sont relativement complexes (pas de déplacement de pages vers ou depuis le swap en cours, peu de mémoire « sale », une quantité suffisante de mémoire libre disponible, etc.), mais lorsqu'elles sont réunies, le thread va récupérer 128 Kb de données du swap toutes les secnodes, jusqu'à ce que les conditions précédemment listées ne soient plus valides. Les pages sont copiées en mémoire, mais sont conservées sur le disque, de manière à ce qu'elles puissent être libérées sans réaliser d'entrées-sorties si cela est nécessaire.

D'après Con Kolivas, ce patch améliore nettement le temps de chargement des applications qui ont été complètement swappées.



« Not a whole lot o' excitement, ye scurvy dogs, but it has t' ALSA, LSM, audit and watchdog merges that be missed from -rc1, and a merge series with Andrew. But on t' whole pretty reasonable - you can see t' details in the shortlog (appended). »

Comme prévu donc, pas de nouvelles fonctionnalités, seulement des correctifs. Comme je le disais plus haut, le déplacement de master.kernel.org a entraîné un délai assez important entre le moment où Linus a annoncé la sortie de cette version, le moment où elle était disponible via GIT et le moment où elle était disponible via kernel.org. Pour ma part, ce nouveau noyau tourne sur ma machine depuis 4 jours, sans que j'ai noté de problèmes particuliers.






La suite au prochain numéro !
Il y a 12 commentaires sur cette page. [Afficher commentaires/formulaire]