Le Blog de Thomas

Logiciels libres, Linux embarqué, et autres ...

Formation Linux embarqué à Toulouse

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 !
Commentaires [Cacher commentaires/formulaire]
16.210.101-84.rev.gaoland.net (2005-09-25 18:03:20)
Merci beaucoup pour ce très bon boulot ! Une petite suggestion : mettre des titres pour chaque point traité. Bonne continuation et encore merci.
cqfd-corp.org (2005-09-25 22:39:00)
Je pense faire partie de cette majorité silencieuse qui doit lire ces "actualités du noyau" sans en dire ici le bien qu'elle en pense. Je romps donc le silence : merci ! C'est sincérement intéressant et pratique, et j'espère pouvoir continuer à lire tes articles.
tchoy.net (2005-09-26 03:06:53)
Je fais ma petite étude en ce moment sur les outils d'analyse statique du code. J'ai dressé une liste (exhaustive?) des outils existants :
http://www.haypocalc.com/wiki/S%C3%A9curit%C3%A9
(voir Liens sur l'analyse statique de code)

Si je trouve la force (et le temps), je vais pondre un article sur le sujet à la même adresse.

Le seul dont j'ai réussi à utiliser est Splint. Il fonctionne pour un programme en C ou en C++, et donne de très nombreuses avertissements (il vaut mieux en désactiver la plupart sous peine d'être noyé dans la quantité d'information).

Ah oui, j'allais oublier : merci Thomas pour tes articles fort intéressants.

Haypo
tchoy.net (2005-09-26 03:36:09)
Bon, désolé de squatter les commentaires, mais je suis décidé à créer l'article (qui est juste une liste pour l'instant) :
http://www.haypocalc.com/wiki/Analyse_statique_de_code

Au passage, ton idée, Thomas, d'outil commun pour analyser le code d'une programme C/C++ existe : metacomp. Description du site : « The goal of the Meta-level Compilation (MC) project is to allow system implementors to easily build simple domain- and application-specific compiler extensions to check, optimize, and transform code. » Mais bon, ça m'étonnerait qu'il soit très utilisé ! Chacun veut faire son outil perso dans son coin je pense ...
http://metacomp.stanford.edu/

Haypo
ThomasPetazzoni (2005-09-26 08:59:03)
Merci Haypo pour le lien sur Metacomp, c'est effectivement ce à quoi je pensais. Et ce qui est amusant, c'est que le responsable de Metacomp est Dawson Engler, un des fondateurs de Coverity, une boîte spécialisée dans l'analyse statique de code. Du coup, je ne sais pas si Metacomp est encore vraiment actif.

En tout cas, je regarderai de près ton article. Si il est bon, peut-être sera-t-il pertinent de le publier ailleurs (en ligne ou sur papier).
ARouen-152-1-28-209.w83-115.abo.wanadoo.fr (2005-09-26 10:02:23)
Salut,

Bon rentrons dans le sujet que tu as lancé dès le début :
"D'un autre coté, est-il vraiment nécessaire d'avoir quelque chose de plus que LWN ou KernelTrap? ?"
Techniquement, je pense que non vu que je ne pense pas que nous avons la culture noyau que possède Jonathan Corbet.
Néanmoins, j'émettrais l'hypothèse suivante : "Pourquoi pas imaginer un site communautaire partageant la charge de l'actualité du noyau se trouvant entre www.kernelnewbies.org et www.lwn.net/kernel/ ?"

Voilà, j'ai jeté ma petite bouteille à la mer...

Christophe
83.206.74.93.auto.oleane.fr (2005-09-26 10:21:48)
Merci pour tes articles de grande qualité!
proxy-1.wanadoo.com (2005-09-26 13:04:04)
Pourquoi ne pas coopérer avec Kernel Traffic ? http://www.kerneltraffic.org/kernel-traffic/latest.html Depuis 1999, Zack Brown fait le même genre de chose. C'est écrit en Anglais, mais il est français.

- Il y a déjà eu des traductions de certains numéros dans d'autres langues, dont le français.

- Il est toujours à la recherche d'aide.

- La synthèse et le tri des threads est une activité qu'il est possible de se partager.
194.51.18.66 (2005-09-26 18:36:15)
- Pour info, Metacomp c'est Coverity, ou plutôt s'était. Ca m'étonnerait que Metacomp soit encore activement développé.

- Tes billets sont très intéressants Thomas, maintenant je ne pense pas que ça vaille le coup de dupliquer les autres efforts. Mais que ça ne t'empêche pas de filer un ou deux pointeurs intéressants de temps en temps. ;)

d.
ThomasPetazzoni (2005-09-26 20:16:45)
David, donc tu penses qu'il vaut mieux que je ne continue pas ces billets, mais plutôt que je contribue à autre chose ? Ce qui m'ennuie, c'est de contribuer à quelque chose en anglais. J'en ai marre de devoir rédiger des trucs en anglais. Donc quoi faire ?
rob76-3-82-228-210-130.fbx.proxad.net (2005-09-26 21:53:42)
Resalut,
Et pourquoi ne pas faire cela mensuellement au lieu d'hebdomadaire, et beaucoup plus cibler ?

~clucas
cite-universitaire-lanntrussac.rain.fr (2005-09-26 23:30:26)
Beau boulot, bravo et encore merci pour ce biller de qualitée
Ajouter un commentaire à cette page:

Combien font 0 et 8 ?