Le détail des évolutions, nouveautés et prévisions est dans la seconde partie de la dépêche. Le sommaire...
- La phase de test
- Les nouveautés :
- kmemleak : Détection des fuites mémoires (noyau)
- kmemcheck : Détection des accès à la mémoire non initialisée
- fsnotify : Nouvelle API de notification du système de fichiers
- Kernel-based mode-setting (KMS) pour Radeon
- perfcounters : moniteur de performances
- I/O topology : arrangement physique des blocs sur les périphériques
- Btrfs : améliorations des performances
- SELinux : corrections suite aux dernières failles
- kmemleak : Détection des fuites mémoires (noyau)
- En bref :
- Prise d'empreinte passive dans Netfilter
- ext3 : meilleures performances pour le chargement des ACLs
- ext4 : défragmentation à chaud
- ARM : prise en charge des plate-formes GTA02/Freerunner, ST-Ericsson U300, Palm Treo 680 et OMAP4
- rfkill : désactivation des ondes radios (WiFi)
- 64 To de mémoire vive sur x86_64
- juju : Nouvelle pile firewire/IEEE 1394
- PPS : support des signaux de haute précision des périphériques Pulse Per Second (GPS)
- USB 3.0 fait son entrée
- Blocage du chargement de module dans le noyau
- Optimisation de l'allocation mémoire (pages mémoires)
- gcov : Support de l'outil de profilage
- Implémentation du protocole réseau 802.15.4 (Zigbee)
- Nouvelle API pour les pilotes réseaux
- CUSE : Pilote en mode caractère en espace utilisateur
- Mise en veille ou en hibernation de mainframe IBM ZSeries
- Prise d'empreinte passive dans Netfilter
- Le bilan en chiffres
- Pour la suite
La phase de test... (↑)
- Après avoir pris de bonnes résolutions durant la période de merge des diverses branches de développement (This release, I'm only going to pull trees that don't do crazy shit), la version RC-1 a été annoncée le 24 juin par Linus :
"Nous avons eu l'habituelle période de deux semaines (et un jour) de fusion des patchs et maintenant la RC-1 est disponible et la fenêtre de merge est fermée.
Il y a beaucoup de trucs là-dedans mais, avant toute chose, laissez-moi vous dire que j'ai rarement été aussi content pendant une période de merge. J'espère vraiment que ce n'est pas juste un hasard extraordinaire mais les gens ont gardé leurs branches git propres. Il n'y a eu que deux ou trois cas où j'ai dit "non, je ne vais pas fusionner ce truc" mais dans l'ensemble cela a vraiment été indolore pour moi.
Je ne dis pas qu'il y a nécessairement moins de bugs que d'habitude, je dis juste que globalement les gens m'ont envoyé des demandes ayant un sens, ont expliqué ce qu'ils avaient fait et, quand j'ai mergé, j'ai vu un travail de développement clair. Cela rend juste le truc bien plus facile pour moi.
Donc merci à tous.
J'espère vraiment que nous allons garder ce cap et que ce n'était pas juste un cas unique de "par hasard le bidule a bien marché cette fois".
En ce qui concerne les changements, la majorité se trouve dans les pilotes (70% des diffs) avec la branche staging qui en représente la majorité (environ 60% des diffs de pilotes — 40% du total). mais, merveille des merveilles, je pense que la branche staging a _diminué_ cette fois-ci du fait des nettoyages. Croyez-le si vous le pouvez.
Sur le front des systèmes de fichiers nous avons du btrfs, de l'ext3 et du xfs en développement actif (Pourquoi xfs ? Du diable si je le sais mais c'est ce qu'indiquent les stats) et il y a un sacré morceau sur tout le travail d'unification de fsnotify.
Pour les architectures : ARM, powerpc, mips, sh, x86 sont concernés. Pour ARM le principal est l'inclusion de nouvelles plate-formes (u300, freescale stmp, ce que vous voulez). Il semble ne pas y avoir de fin à l'apparition de ces nouvelles plate-formes délirantes.
Pour x86 (et dans une moindre mesure pour powerpc) une part notable des diffs concerne le nouveau sous-système perfcounter en plus de plein d'autres choses.
En résumé ? Des tonnes de trucs. Alors commençons à tester et à stabiliser".
- Le 4 juillet c'est la version candidate RC-2 qui est apparue sur les serveurs :
"C'est dispo. Plus gros que ce que j'espérais mais la majorité des changements vient de mises à jour tardives d'architectures (MIPS et documentation de powerpc).
Il y a aussi quelques mises à jour un peu effrayantes sur le pilote i915 mais c'est surtout l'ajout du support displayport et cela ne devrait pas provoquer de régressions.
Je vais être un peu plus strict maintenant au sujet des demandes de merge. Je veux vraiment que la RC-3 (et les suivantes) soit plus petite que ce que nous avons là.
Donc s'il vous plaît testez cette RC et signalez les régressions, qu'elles soient nouvelles ou anciennes. OK ?".
- Après une version RC-3 sans histoire, c'est à l'issue d'une semaine un peu plus sportive que la RC-4 a été annoncée par Linus le 22 juillet :
"OK, ça a été une semaine fun. Nous avons eu un bug dans binutils, un bug ccache et un bug de compilateur. Et là c'était simplement les bugs qui se trouvaient en dehors du noyau mais qui provoquaient des dysfonctionnements des builds.
Mais c'était vraiment inhabituel et le reste est vraiment classique. Beaucoup de petites corrections de partout".
- La RC-5 du 31 juillet a apporté pas mal de changements listés par Linus :
"Bon j'ai encore des trucs en attente, mais je publie quand même cette RC-5 car elle apporte beaucoup de corrections, et puis je ne suis pas trop sûr au sujet de certains des trucs en attente.
À part les diverses corrections de régressions le diff montre quelques nouveaux pilotes (at_hdmac, uc2322, gspca/sn9c20x, ds2782) et des gros changements concernant le Kernel Mode Setting des cartes Radeon (le code source Radeon KMS est physiquement dans drivers/gpu mais il est seulement activé lors du choix de l'option CONFIG_STAGING et il est considéré comme non stable).
Oh et il y a aussi des mises à jour concernant USB-3 xhci".
- Après un délai assez inhabituel de deux semaines la RC-6 a été annoncée le 13 août par Linus :
"Hmm. Beaucoup de petites corrections réparties un peu partout (50% pilotes, et grossièrement 10% pour arch, fs, kernel, tools/perf, "le reste"). Les choses semblent se calmer parce que, en dehors des patchs displayport du pilote i915 et de quelques patchs perfcounter, tous les autres sont vraiment très petits.
Il n'y a pas grand chose de prodigieusement intéressant là-dedans même si je suis personnellement satisfait d'avoir quelques commits à mon nom de plus que d'habitude. Même s'ils sont petits cela me fait me sentir utile ;)
Il y a aussi la correction pour le déréférencement du pointeur NULL qui a déjà été évoqué sur Slashdot, mais franchement, si on suppose le fait que tous les problèmes du type "Vous ne pouvez pas mapper des trucs à zéro" ont été corrigés lors de la dernière alerte, ce bug là ne sera pas aussi mauvais que ce qu'il aurait pu être".
- La RC-7 est apparue le 21 août et Linus, comme souvent, a utilisé la fonction dirstat de Git pour montrer comment se répartissent les changements dans l'arbre des sources du noyau. Bien entendu à ce stade les corrections sont de petites tailles (souvent à peine une ligne) mais on peut noter l'inclusion de 3 patchs par Eric Paris qui sont destinés à corriger les insuffisances de SELinux (voir le paragraphe spécifique dans la partie "Les nouveautés...").
- Celle qui devait être dernière version candidate, la RC-8, a été annoncée par Linus le 27 août :
"Il y a 131 patchs là-dedans et tout est assez trivial. (..) Je ne serai pas disponible la semaine prochaine mais tout devrait être calme. Harcelez les suspects habituels (aussi connus sous le nom de "mainteneurs") à propos de tous les bugs que vous détecteriez. Ils les corrigeront pendant que je serai en train de faire de la plongée".
- Malheureusement une fois de retour Linus a constaté qu'il restait encore quelques régressions à traiter et il a choisi de jouer la sécurité en sortant une dernière version candidate :
"Je sais que j'avais dit que je sortirai le 2.6.31 lors de mon retour de plongée mais il y a eu trop de corrections pendant que j'étais parti pour que je sois rassuré. Donc je fais une RC-9 qu'on va laisser mijoter pendant deux jours afin d'avoir des tests de dernière minute avant de faire la release finale".
Les nouveautés… (↑)
- Deux nouveaux outils de détection de problèmes concernant les allocations mémoire kmemleak et kmemcheck ont été intégrés dans le noyau 2.6.31.
Tout le monde sait, ou devrait savoir, que le noyau Linux est écrit en langage C. Une des charmantes particularités de ce langage est qu'il faut gérer manuellement la mémoire en écrivant explicitement dans son code source les opérations d'allocation et de désallocation. En gros, cela consiste — avant de pouvoir faire quoi que ce soit — à utiliser la fonction malloc() pour réserver de la mémoire et, une fois l'opération terminée, utiliser la fonction free() pour libérer cette mémoire.
Si l'étape du free() est oubliée ou mal codée, alors on a affaire à ce qu'on appelle une fuite mémoire. Les conséquences sont assez graves puisque le programme va occuper de plus en plus de mémoire physique puis d'espace sur le swap de la machine jusqu'à atteindre la limite au delà de laquelle Linux va tuer ce programme glouton en utilisant le mécanisme "OOM killer".
Bien entendu OOM killer est la solution de la dernière chance et il serait bien mieux pour tout le monde si le programme en question ne provoquait pas de fuite mémoire. C'est là qu'intervient kmemleak qui va — comme Valgrind pour les programmes en espace utilisateur — tenter de détecter ces fuites mémoire.
kmemleak, écrit par Catalin Marinas, fonctionne en modifiant l'allocateur mémoire de façon à ce que ce dernier stocke dans un arbre de recherche toutes les allocations et déstocke de l'arbre toutes les libérations mémoire (un peu comme le fait un ramasse-miettes). Quand l'utilisateur veut savoir si une fuite a eu lieu, il lui suffit de lire le contenu de /sys/kernel/debug/memleak et le contenu de l'arbre de recherche est alors injecté dans une liste qui contient toutes les fuites potentielles. Cette liste sert à scanner la mémoire pour vérifier les divers pointeurs mémoires, les blocs, les piles de données, etc. À la fin de ce processus complexe de vérification, les éventuelles fuites sont présentées à l'utilisateur. Ce message de Catalin explique la procédure qu'il utilise afin d'être certain de ne pas être confronté à un faux positif et une documentation complète est disponible.
En ce qui concerne kmemcheck, l'autre outil qui entre dans le noyau Linux 2.6.31, son fonctionnement est plus simple, mais aussi plus pénalisant pour l'utilisation normale de la machine, ce qui le réserve aux développeurs lors des périodes de traque de bugs.
Kmemcheck sert à détecter les accès à des zones mémoires non initialisées, de la même façon que la fonction memcheck de Valgrind. Quand le code fait un appel à la fonction malloc(), il faut écrire quelque chose sur cette zone, par exemple avec la fonction memset(), avant de pouvoir lire cette zone mémoire. Si la mémoire n'est pas initialisée alors toute tentative de lecture provoquera un crash.
Afin de détecter les occurrences de cette erreur, kmemchek utilise une stratégie assez brutale mais simple à comprendre :- Lors d'une allocation mémoire, kmemchek intercepte la demande et crée une allocation parallèle (fantôme) qui va lui servir de référence.
- Kmemchek renvoie ensuite l'information sur l'emplacement de la zone mémoire au demandeur mais en ayant pris soin de mettre un indicateur qui va déclencher une erreur de page (page fault) lors de tout accès ultérieur.
- Plus tard, quand un processus veut accéder à cette zone mémoire, l'erreur de page est donc déclenchée et kmemchek détermine si c'est un accès en écriture (donc un accès normal pour remplir la zone non initialisée) et il met alors à jour la page fantôme avec un code spécial. Si en revanche kemcheck détermine qu'il s'agit d'un accès en lecture, alors il va aller voir la page fantôme pour savoir si le code spécial est présent. Si oui, pas de problème, la zone avait bien été initialisée auparavant, mais si non, alors bingo, c'est un bug de non initialisation de la mémoire qui a été détecté et qui est remonté a l'utilisateur.
L'utilisation de kmemleak et de kmemchek a déjà permis de trouver diverses fuites mémoires et autres problèmes dans le code concernant l'ACPI, SELinux, les architectures i386 et ARM. C'est bien la preuve de leur utilité et leur entrée officielle dans le noyau est donc une bonne nouvelle puisqu'elle va améliorer la fiabilité de Linux.
- Lors d'une allocation mémoire, kmemchek intercepte la demande et crée une allocation parallèle (fantôme) qui va lui servir de référence.
- La nouvelle infrastructure de notification des événements touchant les systèmes de fichiers, fsnotify, fait maintenant partie du noyau Linux 2.6.31.
Tout commence en novembre 2007, quand un développeur de la société d'anti-virus et d'anti-malwares Sophos envoie un message sur la liste de diffusion du noyau en demandant à ce que l'interface LSM (Linux Security Modules) ne soit pas retirée du noyau (il y avait en effet à cette époque des discussions à ce sujet entre les développeurs Linux). Ce développeur explique que Sophos a écrit un module noyau GPL, nommé TALPA, qui permet aux logiciels propriétaires de Sophos qui tournent en espace utilisateur de scanner les fichiers d'un système GNU/Linux afin de détecter des malwares ou des virus (y compris ceux concernant Windows). TALPA se loge dans le noyau et intercepte les appels systèmes de lecture et d'écriture afin de permettre le scan de ces opérations avant qu'elles n'aient effectivement lieu.
Les développeurs du noyau Linux n'ont, c'est peu de le dire, pas été impressionnés par cette solution technique jugée peu élégante et peu protectrice. LSM a fini par gagner sa légitimité en tant qu'infrastructure de sécurité du noyau en accueillant d'autres modules que SELinux mais TALPA, lui, n'a jamais eu la moindre chance d'entrer dans la branche principale.
Pourtant la pression des grosses sociétés commercialisant des anti-virus et anti-malwares n'a pas disparu. Avec la percée commerciale de Linux ces sociétés voient s'ouvrir un nouveau marché constituée par toutes les entreprises traditionnellement friandes de ces scanneurs qui sont très utilisés sous Windows. L'offensive a donc repris et cette fois-ci elle était menée par Eric Paris, un développeur Red Hat qui, le 4 août 2008, a posté un message détaillé sur la liste de diffusion pour proposer à nouveau l'inclusion de TALPA.
Une caractéristique du mode de développement de Linux est que les développeurs se fichent éperdument des arguments commerciaux et marketing. Pour les convaincre, il faut une solution technique solide et Eric Paris s'est efforcé de rester sur ce terrain. On lui a fait brutalement remarquer que scanner des fichiers n'était pas très efficace comme solution de sécurité et que le modèle de menace (threat model) auquel faisait face TALPA était mal défini.
Il a été très honnête dans sa réponse :
"Je veux souligner que beaucoup d'entreprises vont faire tourner ces logiciels sur leurs machines qu'on le veuille ou non. Point à la ligne. Fin de l'histoire. Moi je préfère maintenir une interface propre avec ces scanneurs plutôt que de devoir faire face aux bugs que les clients vont rencontrer quand leurs systèmes modifiés sauvagement auront des problèmes.
Donc que font ces sociétés anti-malwares ? Elles scannent des fichiers. C'est tout (…). Les seules attaques qui sont concernées par cette interface TALPA sont celles qui peuvent êtres détectées en scannant des fichiers. Il peut y avoir toutes sortes de bla-bla marketing ou de croyances vagues mais la réalité est que la seule aide que ces sociétés procurent est une aide contre les menaces détectables par scan. C'est aussi simple que ça. Certains diront que ce n'est pas de la "bonne" sécurité et je ne vais prétendre le contraire, mais si vous exigez vraiment que je définisse un modèle de menace, alors je ne peux pas faire mieux que de dire "Nous tentons de localiser les fichiers qui peuvent être dangereux et nous tentons d'empêcher l'accès à ces fichiers".
Eric Paris a bien senti que son argumentaire n'avait que peu de chance de déchaîner l'enthousiasme des développeurs du noyau, alors il a eu une idée originale. Pour mieux faire passer la pilule TALPA, pourquoi ne pas la coupler avec une vraie amélioration de Linux ?
Les notifications envoyées par les systèmes de fichiers aux applications utilisent deux systèmes différents. L'ancien système, dnotify, est présent depuis la série des noyaux 2.4.x et inotify, le nouveau système, a été ajouté au noyau officiel à partir de la version 2.6.13. Les indexeurs de fichiers comme Tracker ou Beagle, utilisent intensivement inotify pour être prévenu de chaque modification de fichier et pouvoir réindexer ce qui a changé. Bien entendu c'est pénible de devoir maintenir deux systèmes différents mais la compatibilité est à ce prix.
L'idée d'Eric Paris a été de créer un nouveau mécanisme de notifications, propre et générique, et de réimplémenter par dessus les vieux systèmes inotify et dnotify. Ainsi l'interface pour les applications ne change pas mais, à partir du noyau 2.6.31, le mécanisme sous-jacent est complètement rénové.
L'astuce, c'est que ce nouveau mécanisme générique, fsnotify, va dans un futur proche, servir de soubassement technique à un module de scan de fichiers qui se nommera non pas TALPA mais fanotify et qui sera beaucoup plus propre que l'ancien module écrit par Sophos.
Les utilisateurs de Linux gagnent donc un tout nouveau système de notification optimisé qui incorpore beaucoup de conseils de la part des développeurs de systèmes de fichiers : il est plus facilement maintenable, son impact sur le VFS (Virtual File System) est réduit, il unifie les deux systèmes précédents et il réduit la taille de la structure des inodes ce qui constitue une optimisation importante.
Eric Paris, on peut le comprendre, laisse percer un peu de jubilation dans son annonce car, après tout ce harcèlement et ce scepticisme sur l'utilité réelle de TALPA, il a réussi a relever un challenge difficile :
"Tout ceci est fait en préparation de fanotify et afin d'utiliser fanotify en tant que scanneur de fichiers. Donc maintenant vous êtes prévenus. Et pourquoi est-ce utile ? Parce que cela réduit la structure des inodes. Et oui, mon code est plus petit et plus rapide. Mangez-vous ça dans les dents !".
- La fonction de KMS (kernel-based mode-setting) qui était entrée dans le noyau 2.6.29 pour les pilotes graphiques Intel est maintenant aussi utilisable par les cartes Radeon.
KMS permet de gérer directement dans le noyau tout ce qui concerne les modes d'affichages graphiques et cette inclusion dans le noyau a de nombreux avantages.
Tout d'abord, la gestion des modes est centralisée, ce qui évite une grande duplication du code et permet de simplifier les divers pilotes de cartes graphiques. Ensuite KMS autorise la fonction de changement rapide d'utilisateur (fast user switching) en évitant de devoir basculer entre les terminaux virtuels. Les phases de mise en veille et de réveil de la machine sont plus simples et plus fiables. Enfin, l'amorçage de la machine est visuellement plus attractif (nul besoin de basculer les modes d'affichage).
On voit que les avantages de KMS sont très intéressants et il n'est pas étonnant que les divers pilotes graphiques se convertissent progressivement à cette technique.
Néanmoins, une difficulté particulière existait concernant la gestion de la mémoire des cartes graphiques. En effet, Intel avait réussi à inclure dans le noyau 2.6.28 le gestionnaire GEM (Graphics Execution Manager) qui semblait parfait pour les cartes à mémoire partagée (Intel) mais moins efficace pour les cartes à mémoire dédiée (Radeon, NVidia).
La solution GEM avait pris le pas sur son concurrent TTM qui semblait, quoique complexe, plus efficace pour gérer les cartes à mémoire dédiée. Après une brève période d'incertitude, l'inclusion de KMS et de GEM pour les pilotes Intel a montré la voie et a mis fin aux querelles techniques. Les développeurs Radeon ont pu se consacrer à l'adaptation de leur code et le développeur Dave Airlie a réussi à combiner le meilleur des deux mondes en recodant une interface de type GEM par dessus un soubassement technique de type TTM. Le patch ajoutant TTM (5800 lignes) fait donc partie lui aussi du code qui entre dans le nouveau noyau 2.6.31.
Le code noyau des cartes Radeon gère la mémoire de façon plus complexe que GEM en allouant des "buffer objects" et en les mappant sur la mémoire. Des verrous à grains fins protègent les buffer objects pour garder la cohérence des mémoires caches ce qui permet d'éviter un verrou global pénalisant.
Certes, le code de TTM est plus compliqué que celui de GEM, mais cette complexité est inévitable si on veut bénéficier pleinement des très puissantes cartes graphiques modernes. Le nouveau code fonctionne avec les cartes Radeon de type R1XX, R2XX, R3XX, R4XX, R5XX (jusqu'à la carte X1950) et le travail continue pour étendre ce support aux cartes plus récentes.
À noter que ces fonctions KMS/TTM pour les pilotes Radeon font partie de la branche staging (activable avec le choix de l'option CONFIG_STAGING) et ne sont pas encore considérées d'une stabilité optimale. Tout devrait rentrer dans l'ordre dès le noyau suivant et on espère également l'intégration rapide de KMS/TTM pour le pilote nouveau des cartes NVidia.
- Le moniteur de performances perfcounters a été ajouté au noyau Linux 2.6.31 pour les architectures de type x86 et PowerPC, ce qui met fin à la longue absence d'un tel outil dans la branche principale.
Les développeurs sont toujours à la recherche d'outils leur permettant de mieux comprendre ce qui se passe réellement quand un programme fonctionne. Ces outils, qu'on les nomme profileurs, comme par exemple oprofile, ou moniteurs de performances, comme perfmon, servent à savoir exactement où le programme est en train de tourner, le nombre de mauvaises prédictions du processeur, les accès à la mémoire cache, etc. Ces informations de bas niveau sur les zones critiques du code servent à détecter les problèmes de performances et à implémenter des améliorations potentielles.
Les profileurs utilisent les compteurs spéciaux présents dans les processeurs, afin de ne pas induire de pénalité en temps de calcul ce qui risquerait de fausser les résultats. Ils constituent donc une excellente solution d'analyse et l'entrée dans la branche principale du noyau était très attendue... mais cela n'a pas été sans une petite controverse !
En effet, le candidat le plus probable, perfmon, qui est développé par Stéphane Eranian depuis plusieurs années et dont la toute dernière version 3 avait été proposée pour inclusion en novembre 2008 a été grillé sur le poteau par perfcounters qui est développé par Ingo Molnar et Thomas Gleixner.
L'annonce de perfcounters en décembre a pris tout le monde par surprise et n'est pas sans faire penser à l'annonce surprise de l'ordonnanceur CFS par le même Ingo Molnar qui a permis l'entrée de CFS dans le noyau 2.6.23 au détriment de son concurrent développé par Con Kolivas. Cette concurrence entre les deux moniteurs de performances a été bien entendue évaluée sur des critères techniques.
Perfmon nécessite l'introduction de plusieurs nouveaux appels système (douze à l'origine puis seulement cinq par la suite afin d'augmenter ses chances d'intégration).
Il utilise aussi l'appel ptrace() pour stopper l'exécution d'un autre processus afin d'interroger les compteurs du processeur. Cette technique consistant à stopper l'application pour la relancer ensuite a le défaut de perturber les mesures. En outre, le fait de devoir donner le privilège d'utiliser ptrace() à perfmon est assez ennuyeux.
Perfcounters est beaucoup plus simple, puisqu'il n'a besoin que d'un seul appel système et qu'il n'utilise pas ptrace(). La gestion des compteurs des processeurs est plus flexible (possibilité de partager ces compteurs entre divers processus) et le code noyau est plus propre. Un outil, nommé KernelTop, permet de visualiser facilement et en continu les valeurs des compteurs des processeurs.
Un point technique controversé a été l'emplacement de la bibliothèque de programmation des compteurs de processeurs. Perfmon a choisi de faire une bibliothèque externe (en espace utilisateur) alors que perfcounters a préféré tout mettre dans le noyau ce qui a été stigmatisé comme "bloat" par certains développeurs alors que certains autres ont pensé que c'était la meilleure solution à long terme. Les échanges d'arguments techniques entre Ingo et Stéphane ont été nombreux et très directs et, si on veut résumer sommairement le bilan, on peut dire que le choix devait se faire entre le code simple mais manquant un peu de fonctions d'Ingo et le code complexe mais offrant beaucoup de choses de Stéphane.
C'est là qu'est intervenu ce qui fait la grande force d'Ingo Molnar et qui avait déjà décidé de la victoire dans la controverse sur l'ordonnanceur CFS : Ingo écoute les critiques et il corrige très rapidement son code pour en tenir compte.
Jugez-en : l'annonce initiale de perfcounters est intervenue le 4 décembre. Le 8 décembre c'était la version 2 avec l'intégration de KernelTop et diverses d'optimisations. Dès le 11 décembre est annoncée la version 3 avec, outre les corrections et les optimisations, l'introduction des groupes de compteurs et des compteurs virtuels. La version 4 arrive le 14 décembre avec encore des corrections diverses. Elle permet surtout de gérer l'héritage des compteurs afin de pouvoir surveiller les processus fils de façon automatique. On peut ainsi visualiser les événements de toute une hiérarchie de tâches grâce à l'outil timec. La cinquième version est disponible le 23 décembre et elle apporte la possibilité de gérer les compteurs fixes des processeurs (PERF_COUNT_INSTRUCTIONS, PERF_COUNT_CPU_CYCLES et PERF_COUNT_BUS_CYCLES) de façon à éviter de devoir utiliser des compteurs génériques.
À ce stade les critiques soulevées lors de la discussion initiale sont rendues caduques par l'introduction à grande vitesse de corrections et de nouvelles fonctionnalités. Des développeurs qui avaient critiqué perfcounters, comme Paul Mackerras, participent maintenant à perfcounters et écrivent des patchs qui se retrouvent dans la version 6 du 21 janvier.
La version 7 du 21 mars et la version 8 du 6 juin consacrent définitivement perfcounters comme le moniteur de performances devant entrer dans la branche principale. Les performances sont encore améliorées, les fonctions couvrent les besoins des développeurs et les utilitaires disparates des versions précédentes (KernelTop, timec, etc) disparaissent au profit d'une interface unifiée perf qui permet d'enregistrer les évènements (perf stat) et de faire des rapports (perf report). Cet outil perf réutilise des bibliothèques internes de l'outil de gestion de versions Git afin d'avoir un air familier auprès des développeurs de noyau et de tous les autres utilisateurs de Git.
Ce qui est étonnant, c'est que l'outil perf a été intégré directement dans les sources du noyau (dans le nouveau répertoire tools/) au lieu d'être relégué en espace utilisateur. Linus a justifié ce choix en soulignant :
"Nous avons eu des tonnes de cas ou nous avons essayé de "séparer", au nom de la "beauté" ou de je ne sais pas quoi, le code noyau du code utilisateur. C'est presque toujours un désastre.
Regardez oprofile. P*tain quelle horrible saleté. Cela a pris littéralement des mois pour que les outils utilisateurs se mettent à niveau par rapport aux nouvelles fonctions et, après ça, il a fallu encore plus longtemps pour que ces outils fassent partie d'une version qui soit utilisée par les distributions.
Donc je préfère avoir ces outils dans le noyau que de devoir dépendre d'une entité extérieure qui n'en a rien à foutre".
Stéphane Eranian a tenté le 16 juin un dernier baroud d'honneur dans un message fleuve où il détaille toutes ses critiques à l'encontre de perfcounters et tous les points qui restent en suspens. Ingo y a répondu le 22 avec un message de synthèse et des réponses très détaillées lisibles dans ce fil.
Finalement, les développeurs de Linux ont été convaincus par les performances de perfcounters et par ses avantages techniques par rapport à perfmon et ont choisi de l'intégrer dans la branche principale. En définitive Ingo a, une fois de plus, réussi son coup et le noyau Linux y gagne un nouvel outil très utile.
- Martin Petersen, de la société Oracle, a écrit un patch nommé I/O Topology qui permet au noyau de mieux comprendre l'arrangement physique des blocs sur les périphériques qui lui sont rattachés.
Depuis des temps immémoriaux la taille physique des blocs sur les disques était de 512 octets, mais depuis quelques temps les fabricants effectuent une transition vers une taille de bloc de 4 kilo octets et cette transition sera complète en 2011. Les industriels du stockage de données ont même mis en place un consortium pour faciliter cette transition et divers documents techniques sont disponibles sur leur site.
L'avantage d'un disque ayant des blocs de 4 Ko est très simple à comprendre : Sur le disque, les données sont précédées par des informations diverses (adresse, synchronisation, etc) et sont suivies par une somme de contrôle afin de de corriger les erreurs (ECC).
On a donc quelque chose qui ressemble à ça :
[Divers][512 octets de données][ECC].
Donc si on veut enregistrer 4 kilo octets des données sur le disque on doit en fait enregistrer ceci :
[Divers][512 octets de données][ECC][Divers][512 octets de données][ECC]
[Divers][512 octets de données][ECC][Divers][512 octets de données][ECC]
[Divers][512 octets de données][ECC][Divers][512 octets de données][ECC]
[Divers][512 octets de données][ECC][Divers][512 octets de données][ECC]
Avec la nouvelle taille de bloc à 4 kilo octets on peut se contenter d'enregistrer ça :
[Divers][----------4096 octets de données----------][ECC]
On voit bien que la place perdue par les informations de contrôle et de corrections est moindre dans le second cas ce qui entraîne un gain de place (cet article du site LWN explique qu'on passe d'une efficacité de stockage 87% à 96%). On économise aussi sur le temps processeur, puisqu'il y a moins d'informations à traiter.
Cependant un changement tel que celui-ci doit se faire prudemment du fait de l'impact qu'il peut avoir sur les systèmes non compatibles (BIOS, systèmes d'exploitations, LVM, RAID, gestionnaires de partitions, etc). Les fabricants ont donc choisi de passer aux blocs 4 Ko en interne (blocs physiques) mais de continuer à présenter au système d'exploitation une interface basée sur des blocs de 512 octets (blocs logiques). Cette émulation masque la "cuisine interne" du disque, mais elle a aussi le désavantage de ne pas permettre au système d'exploitation d'optimiser l'alignement des blocs puisqu'il ignore le placement réel des blocs physiques sur le disque. Du fait de ce non-alignement des blocs, on a des chevauchements et les plateaux du disque doivent effectuer des tours en plus : le premier secteur partiel doit être lu et stocké dans un tampon puis le second secteur partiel lui est ajouté et, à la rotation suivante, l'information complète est écrite.
Ainsi, par exemple, Windows et Linux utilisent traditionnellement une table de partition de type DOS avec la première partition commençant au bloc 63... qui n'est donc pas du tout aligné sur le début d'un bloc 4 Ko !
C'est ici qu'intervient enfin le patch I/O topology de Martin Petersen. Il permet d'extraire du disque les informations réelles (physiques) sur les blocs et il met à la disposition du noyau ces informations, afin de mapper les blocs du disque et les blocs logiques du système pour obtenir des performances d'alignement optimales.
Par exemple l'information sur le décalage entre la partition et l'alignement physique "naturel" du disque se trouve dans /sys/block/nom_du_disque/alignment_offset.
La documentation détaille toutes ces nouvelles informations rendues disponibles par ce patch et qui vont permettre au noyau Linux d'utiliser ces nouveaux disques à leur plein potentiel.
- Pour prendre la suite d'ext4 dans le futur c'est le système de fichiers btrfs qui est envisagé (voir cet excellent article de Valerie Aurora sur l'historique de btrfs et ses avantages par rapport à ZFS). Le travail continue à plein régime sur btrfs et le noyau 2.6.31 propose beaucoup de changements.
La fonction de recherche des extents libres en RAM, qui pouvait utiliser de grandes quantités de mémoires, a été réécrite et mise à la diète (après une semaine de tests intensifs on pouvait dépasser les 1 Go alors que, maintenant, c'est de l'ordre de 10 Mo).
Le code qui s'occupe de la mise en cache des groupes de blocs a été rendu asynchrone afin de ne plus bloquer l'exécution et de permettre des allocations anticipées. Selon la méthodologie de test décrite par Josef Bacik dans son message explicatif on passe de 16 secondes à seulement 6 pour terminer le test.
L'arrivée massive des lecteurs solides (SSD) à mémoire Flash est anticipée par les développeurs de btrfs qui travaillent pour apporter les meilleures performances possibles sur ces nouveaux types de disques. L'auto-détection du lecteur solide est maintenant incorporée (par l'intermédiaire de la vérification de l'indicateur "nonrot") et elle permet de mettre en œuvre des optimisations particulières. Par exemple, le montage de ces lecteurs sous btrfs utilise maintenant moins de cycles processeur et l'allocation des blocs est plus intelligente.
Enfin, le code gérant l'utilisation des "back references" (c'est-à-dire savoir, à partir d'un bloc de données, vers quelles méta-données le bloc pointe) est largement modifié de façon a réduire les temps de latence et améliorer la montée en charge. Il est à noter que ce changement remanie le format de btrfs sur le disque et que les noyaux précédents ne peuvent pas monter une partition btrfs qui incorpore ce changement.
Linus lui-même s'est fait avoir comme un bleu par cette modification (même s'il reconnaît que le noyau l'avait averti au moment de la conversion du format) et il a été obligé de réparer son système en bootant sur une clé USB. Cela a valu à Chris Mason, le responsable de btrfs, un message indigné et le qualificatif de "double-plus-ungood" pour ce changement tardif de format de disque.
- Dans le noyau 2.6.31 la sécurité du module SELinux a été renforcée à la suite des exploits successifs de Brad Spengler qui reposaient en partie sur une configuration fautive de ce module de sécurité.
Le fichier mmap_min_addr se trouve dans le répertoire /proc/sys/vm/ et il sert à indiquer au système quelle est l'adresse minimum à partir de laquelle les programmes peuvent allouer de la mémoire. Ce mécanisme a été introduit à partir du noyau 2.6.23 car les développeurs se sont rendu compte qu'il était dangereux de laisser des programmes utiliser les toutes premières pages de la mémoire (celles qui se trouvent à partir de l'adresse 0). Si un bug exploitable existe dans un tel programme alors le système lui-même est en grand danger d'être complètement compromis.
Pour éviter cela, il suffit de mettre une valeur non nulle dans mmap_min_addr et ainsi les programmes ne sont plus autorisés à mapper une zone mémoire à partir de l'adresse de départ. Bien entendu, quand le contenu du fichier mmap_min_addr est à zéro, cela signifie qu'il n'y a pas de protection.
Pour savoir si vous pouvez dormir (relativement) tranquille, il vous suffit donc d'aller voir quelle est la valeur paramétrée dans le fichier qui se trouve sur votre machine :
patrick@laptop:~$ cat /proc/sys/vm/mmap_min_addr
65536
Cette sécurité n'est pas parfaite (aucune ne l'est complètement) mais elle est tout de même fort efficace. Julien Tinnes, le développeur ayant trouvé les bugs de sécurité qui ont mis Brad Spengler sur la piste de son exploit, souligne sur son blog que mmap_min_addr est une bonne fonction de sécurité : "En pratique cette fonction a été suffisament utile pour rendre plus difficile ou même impossible la création d'exploits à partir de beaucoup de vulnérabilités".
L'ennui, c'est que le module de sécurité SELinux est venu mettre son grain de sel dans cette fonction de sécurité et les choses sont devenues plus complexes.
La plupart des programmes tournant sur une distribution Red Hat/Fedora le font avec une configuration de SELinux qui se nomme unconfined_t et qui — comme son nom l'indique — n'impose pas de restrictions. Seuls les programmes "sensibles" sont protégés par SELinux et les autres, pour éviter de gêner l'utilisateur, ne le sont pas.
La faille de sécurité, c'est que le mode unconfined_t ne tient pas compte de la valeur qui se trouve dans mmap_min_addr. Même si cette valeur est non nulle, les programmes sont quand même autorisés par le mode unconfined_t de SELinux à mapper une zone mémoire à partir de l'adresse de départ. Comme le souligne Brad Spengler : "Avoir SELinux signifie *AFFAIBLIR* la sécurité du système pour ce genre d'exploits".
Les développeurs de Red Hat/Fedora sont bien ennuyés par cette situation car ils veulent garder la compatibilité avec les rares applications qui exigent absolument de pouvoir mapper la mémoire à partir de l'adresse de départ (Wine ou Dosemu par exemple) et ils veulent également boucher la faille de sécurité.
Pour remédier à ce grave problème et garder en même temps de la flexibilité pour répondre aux multiples usages des utilisateurs les solutions suivantes ont été adoptées :
Tout d'abord la fonction mmap_min_addr ne pourra plus être contournée par le module de sécurité SELinux. Si un programme a quand même besoin de mapper de la mémoire en dessous de la limite fixée, alors il devra obligatoirement avoir la capacité CAP_SYS_RAWIO (les capacités, capabilities en anglais, sont un système permettant de décomposer finement les droits administrateurs afin d'autoriser certaines actions et pas d'autres).
Ensuite, si la valeur de mmap_min_addr est à zéro (pas de protection du tout), alors SELinux pourra quand même restreindre l'accès à l'adresse mémoire de départ, en autorisant juste certains programmes (au hasard Wine) et pas d'autres.
Ainsi on voit que SELinux retrouve son rôle de gardien vigilant du système, puisqu'il ne peut que renforcer la protection et jamais l'affaiblir.
En bref... (↑)
- Le pare-feu Netfilter a été amélioré puisqu'il dispose maintenant d'une fonction de prise d'empreinte passive. Avec ce module, il est possible — comme le fait OpenBSD depuis longtemps — de reconnaître passivement le système d'exploitation qui demande une connexion et d'appliquer des règles spécifiques à ce système d'exploitation. Le module incorporé se base sur osf qui a été développé depuis six ans par Evgeniy Polyakov. Un fichier de reconnaissance, d'origine OpenBSD, mais compatible avec osf, est disponible.
- Linus Torvalds a écrit pour le noyau 2.6.31 un patch qui améliore les performances du système de fichiers ext3. Avant le patch de Linus, si le système de fichier prenait en charge les listes de contrôle d'accès (ACL), alors chaque accès à un fichier non possédé par l'utilisateur déclenchait une vérification des droits ACL en posant un verrou (et ce, même si des droits ACL n'avaient même pas été positionnés). Linus réussit à éviter de poser le verrou dans la plupart des cas et ses tests montrent une amélioration d'environ 3% des temps de latence.
Le patch d'optimisation de Linus a été porté également pour ext4 par Ted Ts'o.
- Justement le système de fichiers ext4, considéré comme stable depuis le noyau 2.6.28, continue lui aussi d'être amélioré et de gagner des nouvelles fonctions. Cette fois c'est la défragmentation à chaud qui fait son apparition. Pour piloter cette défragmentation l'outil e4defrag utilise le nouveau contrôle ioctl nommé EXT4_IOC_MOVE_EXT. Theodore Ts'o, le mainteneur d'ext4, tient toutefois à avertir que cette fonction de défragmentation à chaud est encore primitive et que des améliorations seront présentes dans les noyaux suivants.
- Comme annoncé par Linus dans le message de la RC-1, le noyau 2.6.31 apporte la prise en charge de nombreuses nouvelles variétés de plate-formes ARM. On peut citer l'entrée dans la branche principale de l'Openmoko GTA02/Freerunner, des diverses variantes du ST-Ericsson U300, du Palm Treo 680 ou encore de la très puissante plate-forme OMAP4 (dual core Cortex-A9).
- Le sous-système rfkill a été complètement réécrit dans le nouveau noyau. Rfkill est une interface générique qui permet d'éteindre complètement tous les périphériques qui émettent des ondes radios (Wi-Fi, Bluetooth, etc) souvent par l'intermédiaire des touches sur un ordinateur portable ou par la fermeture de l'écran. Johannes Berg détaille dans son message de commit tous les défauts de l'ancienne interface qui ont été corrigés grâce à la réécriture (factorisation du code de tous les pilotes rfkill, suppressions des verrous inutiles, simplification du code, etc).
- Si vous vous sentiez un peu à l'étroit avec les 16 téraoctets de mémoire vive de votre machine x86-64, vous serez heureux d'apprendre que les développeurs du noyau 2.6.31 ont pensé à vous. À partir de cette version la limite de de gestion mémoire de l'architecture x86-64 a été portée à 64 téraoctets (64 x 10^12 octets). Comme on l'a déjà (imprudemment) avancé dans le passé "cela devrait être suffisant pour tout le monde".
- La nouvelle pile Firewire/IEEE 1394 qui a été introduite dans le noyau 2.6.22 et connue sous le surnom de "juju", n'est désormais plus considérée comme expérimentale. La plus grande partie des pilotes sont désormais convertis pour utiliser cette nouvelle pile, qui gagne au passage la fonction "IPv4 over IEEE 1394", et ils peuvent donc bénéficier de ses multiples avantages : une meilleure sécurité, un code plus simple, une compatibilité renforcée et des performances en hausse. Attention toutefois car, dans le domaine spécifique de l'audio, c'est l'ancienne pile "Linux1394" qui est recommandée car la nouvelle n'est pas encore compatible avec les périphériques qui utilisent les pilotes FFADO (Free FireWire Audio Drivers).
- Une interface de programmation conforme à la RFC-2783 a été incorporée au noyau Linux afin de permettre le support des périphériques PPS (Pulse Per Second). Avec l'ajout par Rodolfo Giometti de cette interface et de sa documentation il est maintenant possible de se servir du signal de haute précision des périphériques externes PPS (souvent des récepteurs GPS) pour ajuster l'heure système de votre machine avec bien moins d'une milliseconde de déviation par rapport à l'heure UTC.
- Le protocole USB 3.0 fait son entrée dans le noyau 2.6.31 par l'intermédiaire des patchs de la développeuse Sarah Sharp qui travaille chez Intel (lire son entretien ici).
Linux est ainsi le tout premier système d'exploitation a être compatible avec cette norme permettant de connecter des périphériques à chaud avec un très haut débit (rappelons que le débit maximum prévu par la version 3.0 du protocole USB est de 4,8 Gbit/s soit 10 fois le débit d'USB 2.0). La transition vers USB 3.0 devrait se faire rapidement, car la nouvelle norme garde une compatibilité ascendante et les usines tournent déjà à plein régime pour produire les contrôleurs de bus compatibles.
- Pour simplifier la vie des administrateurs paranoïaques (ou consciencieux ?), il est maintenant possible de bloquer très simplement le chargement des modules dans le noyau. Ainsi, après le boot initial et son chargement des modules indispensables, il suffit d'un petit "echo 1 > /proc/sys/kernel/modules_disabled" pour interdire irréversiblement tout chargement ultérieur de modules.
- Mel Gorman a proposé plusieurs patchs afin de nettoyer et d'optimiser la très critique fonction d'allocation mémoire se trouvant dans le noyau Linux. Dans son message de description des patchs, Mel signale qu'il a remplacé des embranchements dans le code par une table afin de gagner en vitesse, il a séparé les chemins critiques pour les performances des autres parties, il a évité de répéter de multiples fois le même test, etc. Tout ce travail de bénédictin (plus de 20 patchs en tout) a payé puisque le code est maintenant plus simple et plus efficace. Selon les benchmarks effectués et dont le compte-rendu est disponible ici, on gagne en moyenne 3% sur les performances (les extrêmes vont de 0 à 30%).
- La gestion de l'outil de profilage de code gcov entre dans le noyau 2.6.31. Gcov est un projet lié au compilateur GCC qui permet d'obtenir des informations sur les performances du code. Pour profiter de ses services, il faut passer l'option "CONFIG_GCOV_KERNEL=y" et suivre la documentation. On peut ainsi savoir si une ligne de code particulière est exécutée et combien de fois, comment écrire des tests pour couvrir une section particulière de code, quel fraction de temps processeur utilise telle portion de code, etc.
Attention toutefois car un noyau tournant avec gcov activé sera significativement plus gros et plus lent qu'un noyau normal.
- Le protocole de communication 802.15.4 est à la base des réseaux Zigbee (la même chose que Bluetooth mais en drastiquement plus simple et moins cher). Le noyau 2.6.31 propose une implémentation initiale du protocole 802.15.4 ainsi qu'une documentation succinte sur cette implémentation et un exemple de pilote. Ces ajouts vont permettre de bâtir des réseaux personnels sans fils (Wireless Personal Area Networks) à bas coût et à très faible consommation.
- L'interface interne de programmation (API) des pilotes réseau avait été modifiée dans les noyaux antérieurs au 2.6.31. Le nettoyage, initié par Stephen Hemminger, a consisté à séparer les parties qui gèrent la gestion du pilote de celles qui concernent les données. Dans le nouveau noyau l'ancienne interface, utilisable avec COMPAT_NET_DEV_OPS, a été complètement enlevée des sources et tous les pilotes réseau (plus de 300) sont modifiés. Une démonstration éclatante de la qualité du modèle Linux qui permet, par l'intégration directe des pilotes libres dans les sources du noyau, de procéder à des grandes modifications et optimisations sans craindre les problèmes de compatibilité.
- Grâce à Tejun Heo de la société Novell, les périphériques en mode caractère peuvent maintenant avoir des pilotes en espace utilisateur. Ceci est possible grâce à CUSE (Character devices in user space) qui fonctionne en tant que surcouche à FUSE (File systems in user space). Cela permettra d'enlever du noyau les vieux pilotes en mode caractère et de proposer plus proprement une compatibilité avec les vilaines applications qui continuent d'utiliser OSS au lieu de passer à ALSA.
- Enfin, si vous avez besoin de mettre en veille ou en hibernation votre mainframe IBM ZSeries comme si c'était un vulgaire ordinateur portable, c'est maintenant possible. La mise en veille est implémentée par ce patch tandis que l'hibernation l'est par celui-ci. Maintenant il vous suffira d'un petit "echo disk > /sys/power/state" pour réduire drastiquement votre facture d'électricité !
Le bilan en chiffres... (↑)
Côté statistiques, l'habituel article récapitulatif du site LWN est disponible et on pourra également se reporter au site dédié aux statistiques du noyau Linux.
Pour le noyau 2.6.31, le nombre de patchs était de 10814 au 03 septembre (11984 pour le 2.6.30) ce qui en fait un cycle de développement normal puisque l'habitude a été prise, aux alentours du 2.6.24, d'avoir plus de 10000 patchs dans un cycle.
Le nombre de développeurs ayant contribué au nouveau noyau s'établit à 1151 (là encore c'est stable par rapport aux 1145 du noyau 2.6.30). Le nombre de lignes de codes ajoutées est d'environ 903000 et le nombre de lignes supprimées d'environ 494000 (croissance de 409000 lignes donc pour ceux qui savent compter sur leurs doigts).
Sans surprise, c'est Ingo Molnar qui est en tête de liste des plus gros contributeurs, c'est le reflet de l'inclusion des patchs de perfcounters, avec 277 patchs (2,6% du total).
Côté entreprises les statistiques, toujours difficiles à établir exactement dans ce domaine, oscillent entre 187 et 194 employeurs différents.
Les développeurs travaillant sur leur temps libre restent en tête (16% des patchs), mais ils sont suivis de très près par Red Hat qui approche les 15%.
Une autre mesure très importante est celle des tags "signoffs" qui n'émanent pas des auteurs du patch. C'est en fait un moyen de voir qui autorise ou pas l'entrée du code dans la branche principale. On retrouve dans cette liste tous les responsables des divers sous-systèmes du noyau Linux (les cinq premiers de la liste sont David S. Miller, Ingo Molnar, Greg Kroah-Hartman, John W. Linville et Andrew Morton).
Il est frappant de constater, en dépit de la très longue traîne, que les développeurs d'un tout petit nombre d'entreprises ont ce rôle de "gardiens du noyau". Rien qu'avec Red Hat on a déjà 38,7% des signoffs n'émanant pas de l'auteur. Si on ajoute Novell, on monte a 49,8%.
En prenant les 5 principales entreprises de ces "gardiens du noyau" (Red Hat, Novell, Intel, Google, IBM) on arrive au total à 68,5% des autorisations d'intégration de patchs.
Au bilan global nous avons donc une version 2.6.31 assez "typique" et une confirmation de la robustesse du mode de développement actuel.
Pour la suite... (↑)
En ce qui concerne les futures nouveautés des prochaines versions du noyau on peut se tourner vers la page spécifique de la Fondation Linux
- Il est prévu que le noyau 2.6.32 accueille le résultat du travail de Rafael Wysocki sur le "Runtime power management". Ces patchs implémentent une infrastructure centralisée de gestion de l'énergie qui permettra de mettre en veille et de rallumer à la volée les divers périphériques d'une machine afin de gagner en consommation d'énergie. Ce travail de fond (plus de 17 révisions depuis la proposition initiale) est décrit en détail dans la documentation technique.
- Le système de fichiers en réseau NFS a connu de nombreux ajouts lors des dernières versions du noyau Linux. Ce travail prépare progressivement l'entrée de la version 4.1 et permettra de proposer un accès bien plus rapide aux données à travers le réseau. C'est le mécanisme Parallel NFS (pNFS) qui permet cela en envoyant les données à partir de plusieurs disques en parallèle (technique de striping). Le noyau 2.6.31 a accueilli le code qui gère le client NFS 4.1 et il est prévu que le futur noyau 2.6.32 intègre la gestion serveur.
Aller plus loin
- Les nouveautés du noyau 2.6.31 (kernelnewbies) (67 clics)
- Le bilan des ajouts partie 1 (LWN) (6 clics)
- Le bilan des ajouts partie 2 (LWN) (4 clics)
- "2.6.31 Tracking" sur le site de H-online (6 clics)
- Les prévisions pour l'avenir de Linux (8 clics)
# pfff…
Posté par Zorro (site web personnel) . Évalué à 10.
[^] # Re: pfff…
Posté par patrick_g (site web personnel) . Évalué à 10.
En tout cas merci aux relecteurs/correcteurs de la dépêche (baud123, Xate, rootix, plic) et un merci très spécial à Victor Stinner qui s'est tapé tout le boulot de création du magnifique sommaire détaillé.
[^] # Re: pfff…
Posté par Ellendhel (site web personnel) . Évalué à 10.
Non mais, ça ruine notre productivité un article de cette qualité.
[^] # Re: pfff…
Posté par mornik . Évalué à 7.
Merci pour cette lecture.
[^] # Re: pfff…
Posté par scullder . Évalué à 7.
[^] # Re: pfff…
Posté par Dup (site web personnel) . Évalué à 4.
# ZSeries
Posté par Geoffrey Gouez (site web personnel) . Évalué à 9.
j'aime bien ce concept :) Je ne pense pas que je me risquerais a faire le test, mais celui qui a fait ca devait avoir une sacrée raison...
[^] # Re: ZSeries
Posté par Sphax . Évalué à 4.
Je me demande bien l'intérêt.
[^] # Re: ZSeries
Posté par Nÿco (site web personnel) . Évalué à 10.
[^] # Re: ZSeries
Posté par Mr Kapouik (site web personnel) . Évalué à 6.
Ralala vous ne comprenez pas Madame Michou * ...
* : Se référer aux livres de référence à savoir "Madame Michou devient DSI" et "Martine administre des serveurs". En plus c'est plein de beau dessins en couleur.
[^] # Re: ZSeries
Posté par ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ (site web personnel) . Évalué à 10.
Supposons que tout cela soit encore de la science-fiction car les librairies de parallélisation ne supportent peut-être pas ce genre de coupure. En tous cas, c'est un premier pas dans une bonne direction. Voici l'œuf, la poule viendra en son temps. Plus qu'à mettre le truc dans l'étuve.
« IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace
[^] # Re: ZSeries
Posté par Brioche4012 (site web personnel) . Évalué à 2.
[^] # Re: ZSeries
Posté par Boa Treize (site web personnel) . Évalué à 3.
La bonne réponse est beaucoup plus probablement (ce n'est pas mon domaine d'expertise) que les zSeries sont des machines extrêmement virtualisées, où il est normal de faire tourner plein d'instances d'OS en parallèle (genre 60). Dans ce cas, il peut être très intéressant de mettre un des OS en veille, pour des problèmes de charge par exemple.
[^] # Re: ZSeries
Posté par steph1978 . Évalué à 2.
pas besoin d'hibernation, si ?
[^] # Re: ZSeries
Posté par Jllc . Évalué à 2.
[^] # Re: ZSeries
Posté par ʭ ☯ . Évalué à 6.
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
# Un vrai bonheur
Posté par oelson . Évalué à 3.
Continue !
[^] # Re: Un vrai bonheur
Posté par Olivier (site web personnel) . Évalué à 0.
[^] # Re: Un vrai bonheur
Posté par Zorro (site web personnel) . Évalué à 5.
Même chose pour Windows, d’ailleurs.
Ha oui, mince, c’est vrai, tu l’as dit toi-même que c’était pas comparable ! :-)
[^] # Re: Un vrai bonheur
Posté par Boa Treize (site web personnel) . Évalué à 4.
Notamment un article sur les optimisations apportées au chargeur d'applications écrites en Objective C, qui a réduit la consommation mémoire globale de l'OS et a amélioré significativement les temps de démarrage des applications. (Significativement en termes de pourcentages. Pour l'utilisateur, c'est quelques dixièmes de seconde. Mais pour chaque programme lancé.)
# kmemcheck
Posté par Gof (site web personnel) . Évalué à 9.
Toute tentative de lecture ne provoquera pas de crash. La lecture fonctionne très bien mais puisque rien n'est initialisé, c'est les données qui était à cet emplacement mémoire avant qui sont lues.
Et c'est souvent la cause de bugs difficile à trouver puisque ces données sont plus ou moins aléatoires.
D'ailleurs, si ça provoquais un crash, on aurais pas besoin de kmemcheck pour les détecter. (car un crash ça se voit)
[^] # Re: kmemcheck
Posté par patrick_g (site web personnel) . Évalué à 3.
La vraie merde ce sont effectivement comme tu le dis les bugs qui ne causent pas de crash et qui corrompent juste les données.
[^] # Re: kmemcheck
Posté par Pierre Carrier . Évalué à 4.
[^] # Re: kmemcheck
Posté par Brice Goglin . Évalué à 2.
[^] # Re: kmemcheck
Posté par patrick_g (site web personnel) . Évalué à 1.
Ce n'est pas ce qu'écrit Jon Corbet dans un article ou il évoque kmemcheck ici : http://lwn.net/Articles/260068/
Using uninitialized memory can lead to some seriously annoying bugs. If you are lucky, the kernel will crash (...) Other times, though, something more subtly wrong happens, forcing a long hunt for the stupid mistake.
[^] # Re: kmemcheck
Posté par Cédric Chevalier (site web personnel) . Évalué à 5.
le crash potentiel sans kmemcheck est dû aux conséquences de la lecture de la zone mémoire non initialisée mais ce n'est jamais la lecture elle-même qui génère le crash.
[^] # Re: kmemcheck
Posté par peck (site web personnel) . Évalué à 3.
[^] # Re: kmemcheck
Posté par let antibarbie = xp <- xp - 1 . Évalué à 0.
[^] # Re: kmemcheck
Posté par Gof (site web personnel) . Évalué à 4.
Il n'y a pas de crash dans l'histoire. kmemcheck log les accès en lecture à de la mémoire non initialisée.
La lecture de mémoire non initialisée est souvent la cause d'un bug. Mais peut aussi être parfaitement légitime. (pour des raison de performance)
# Juste...
Posté par skeespin (site web personnel) . Évalué à 1.
[^] # Re: Juste...
Posté par Carl Chenet (site web personnel) . Évalué à 1.
[^] # Re: Juste...
Posté par Victor STINNER (site web personnel) . Évalué à 2.
@patrick_g : LinuxMag paie (bien ses auteurs), à toi de voir ;-)
Par contre, j'ai beau cliquer sur mon LinuxMag, Firefox ne réagit pas. C'est un peu nul le papier.
[^] # Re: Juste...
Posté par patrick_g (site web personnel) . Évalué à 10.
Les articles de LinuxMag sont très bien foutus et bien plus techniques et détaillés que les miens. Je serai bien incapable de les écrire.
Je pense aussi que le public n'est, en partie, pas le même.
C'est assez dur de trouver un niveau de détail qui puisse intéresser la majorité des lecteurs LinuxFR sans (trop) rebuter les grands débutants et sans (trop) ennuyer les vieux routiers. C'est pour ça que j'essaye autant que possible de raconter l'histoire autour du code (comme ici pour fsnotify ou perfcounters) afin que ça ne soit pas trop aride.
[^] # Re: Juste...
Posté par Olivier (site web personnel) . Évalué à 7.
Par exemple, je n'étais pas au courant des capacités de défragmentation de ext4 (personnellement, j'ai 3 disques en production fragmentés à plus de 30%...), et cela donne envie d'utiliser ce FS (même si pour l'instant, la défragmentation reste encore un peu "expérimentale".
[^] # Re: Juste...
Posté par Dafatfab . Évalué à 0.
Ah, d'accord, t'es sous windows, c'est ça ?
arf, pas pû m'en empêcher... :-) ---> []
[^] # Re: Juste...
Posté par ckyl . Évalué à 1.
Tu as une poutre dans l'œil ou quoi ? Aujourd'hui j'ai été obligé de faire un mv /home/moi /backup && mv /backup/moi /home pour essayer de retrouver des perfs raisonnables sur ma station au taff.
Si ext3 ne fragmente pas trop dans certains cas, y'en a plein d'autres ou c'est une catastrophe. Réfléchi à l'utilisation classique d'un /home, l'évolution de son taux de remplissage et au fonctionnement d'ext3. C'est pas difficile de trouver ce qui cloche de ne pas pouvoir faire une défragmentation...
[^] # Re: Juste...
Posté par CrEv (site web personnel) . Évalué à 2.
[^] # Re: Juste...
Posté par patrick_g (site web personnel) . Évalué à 3.
Il me semble qu'après un run de fsck il te dit le pourcentage de fragmentation non ?
[^] # Re: Juste...
Posté par ckyl . Évalué à 8.
Ca te donne le nombre de fichiers avec des blocs non contigus par rapport au nombre de fichier total. Et aussi le nombre de blocs non contigus par rapport au nombre de bloc total.
si tu veux des stats sur un fichier il faut jouer avec l'ioctl(2) FIBMAP (cf ioctl_list(2)). T'as un exemple de code là: http://www2.lut.fi/~ilonen/ext3_fragmentation.html
Ne pas avoir de défragmentation online est une bêtise qui s'explique très facilement:
1- Un système de fichier fragmente *toujours* (fichiers qui grossissent, taux de remplissage important etc.)
2- Un fichier qui est fragmenté reste fragmenté pour l'éternité. La lutte contre la fragmentation s'effectue lors de l'écriture du fichier. Sauf suppression de fichier, la fragmentation ne peut qu'augmenter.
Les mecs qui disent que ça ne sert à rien sont juste des guignols. La seule différence entre FAT et ext3 c'est que FAT est une bouse pour lutter contre la fragmentation à l'écriture. Ext3 ne retarde que l'échéance.
À terme, on peut aussi imaginer des techniques plus avancées pour placer les fichiers de manière intelligente pour éviter des seeks et gagner du temps lors du lancement d'application etc.
[^] # Re: Juste...
Posté par Victor STINNER (site web personnel) . Évalué à 7.
[^] # Re: Juste...
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 4.
[^] # Re: Juste...
Posté par pasBill pasGates . Évalué à 2.
[^] # Re: Juste...
Posté par mscestdelamerde . Évalué à 2.
[^] # Re: Juste...
Posté par thedude . Évalué à 2.
[^] # Re: Juste...
Posté par Maurice Rosenfelder (site web personnel) . Évalué à 1.
Même si c'est 100 000 fois, il y a une limite.
Une bonne partie de la cuisine interne du disques est consacrée à ce problème. Il s'agit de répartir uniformément les écritures de telle façon que ce ne soit pas toujours les mêmes éléments qui soient réécrits.
[^] # Re: Juste...
Posté par thedude . Évalué à 1.
Apres, on peut tout a fait considerer la duree de vie comme etant une perf, mais j'avais compris son message dans le sens "performance de lecture/ecriture" pas dans le sens duree de vie.
Et la pour le coup je vois pas trop pourquoi a priori, d'ou ma demande de precision.
[^] # Re: Juste...
Posté par mscestdelamerde . Évalué à -8.
[^] # Re: Juste...
Posté par pasBill pasGates . Évalué à 8.
Les SSDs ont des algos charges de repartir les blocs ecrits (wear-leveling) pour eviter d'ecrire trop de fois les memes cellules, faire cela demande d'avoir un mapping entre les blocs "reels" presentes au FS et les blocs internes.
Lorsque tu defragmentes, en gros tu t'amuses a tout reecrire une fois de plus, en plus de bouffer les cycles d'ecriture, tu risques de rendre cette table encore plus complexe(selon l'odre des effacements/ecritures, ...), ce qui rend les operations futures plus lentes parce qu'il faut se taper cette table bien grosse et complexe apres.
cf. l'Intel X-25 qui avait un cas extreme de cela et pour lequel Intel a du creer un patch du firmware pour limiter la casse.
[^] # Re: Juste...
Posté par Boa Treize (site web personnel) . Évalué à 2.
De toute façon ils gèrent les blocs à leur sauce, dans le dos de l'OS, auquel ils ne présentent qu'une vue virtuelle des numéros de blocs.
[^] # Re: Juste...
Posté par zebra3 . Évalué à 3.
Mais depuis que Symantec a pris la main, ce n'est plus ça...
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Juste...
Posté par gpe . Évalué à 1.
[^] # Re: Juste...
Posté par Sylvain Sauvage . Évalué à 3.
[^] # Re: Juste...
Posté par Olivier (site web personnel) . Évalué à 2.
La cause de cette fragmentation excessive est que sur les machines en question, plusieurs softs lancés en parallèle créent de gros volumes de fichiers. Et comme ils ne pré-allouent pas ces fichiers, ils fragmentent comme des fous.
Tu as le même problème avec les fichiers du /var/log/*
Sur une machine "bureautique", il est très facile de reproduire un comportement similaire, avec des softs faisant par exemple du bittorent ou du emule. Quoi que certains de ces softs commencent par créer un fichier vide occupant la taille totale du fichier final, puis ils le remplisse.
[^] # Re: Juste...
Posté par Kaoru . Évalué à 7.
http://vleu.net/shake/
Je vous laisse juger par vous-même
[^] # Re: Juste...
Posté par Pierre Jarillon (site web personnel) . Évalué à 10.
Alors là, pour la première fois, je ne te crois pas ! Tes articles sur le noyau sont à chaque fois un vrai régal et se lisent comme un roman d'aventures. Car ce développement est une vraie aventure qui marquera notre époque et même notre civilisation.
Tu fais un travail d'historien qui servira aux élèves de CM1 de 2080 quand ils apprendront l'histoire de l'informatique.
[^] # Re: Juste...
Posté par patrick_g (site web personnel) . Évalué à 2.
Hem...point trop n'en faut sinon ça va se voir que je stipendie des louangeurs ;-)
[^] # Re: Juste...
Posté par Zorro (site web personnel) . Évalué à 3.
[^] # Re: Juste...
Posté par riri le breton (site web personnel) . Évalué à 5.
Non sincèrement, comme il a été dit à plusieurs reprises, tes articles sont un régal pour tous ceux qui aimeraient s'intéresser au noyau, du moins à ses évolutions, mais n'ont pas le temps nécessaire à sa compréhension.
Merci et bravo.
[^] # Re: Juste...
Posté par CrEv (site web personnel) . Évalué à 10.
En fait, pour ma part c'est même cette partie là qui m'intéresse le plus.
Donc merci bien pour cette partie, et surtout continue, c'est un régal.
[^] # Re: Juste...
Posté par Spack . Évalué à 6.
C'est un peu le « Loft Story » du développement du noyau et c'est plus intéressant que l'émission originale :).
# Une coquille, une question
Posté par Sylvain Blandel . Évalué à 2.
Lors d'une allocation mémoire, kmemchek intercepte la demande est crée une allocation parallèle (fantôme) qui va lui servir de référence.
Une question : quel est l'état d'avancement du projet « kill-the-BKL » qui vise à se débarrasser totalement du verrou global ?
Voir cette dépêche qui date de mai 2008 : http://www.linuxfr.org/2008/05/18/24099.html
[^] # Re: Une coquille, une question
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
[^] # Re: Une coquille, une question
Posté par patrick_g (site web personnel) . Évalué à 2.
[^] # Re: Une coquille, une question
Posté par patrick_g (site web personnel) . Évalué à 2.
Sur le kernel lock je ne sais pas trop te répondre. J'ai vu passer quelques mails qui concernent ce sujet et c'est donc la preuve que le travail continue doucement...mais je suppose qu'au fur et à mesure que le BKL ne concerne plus que des coins obscurs et très peu utilisés du noyau, l'incitation à le traquer se fait de moins en moins forte.
[^] # Re: Une coquille, une question
Posté par Victor STINNER (site web personnel) . Évalué à 8.
* The Big Kernel Lock lives on (May 26, 2004) : Article de corbet
* tty: BKL pushdown (8 Feb 2008) : email (patch) de d'Alan Cox
* The big kernel lock strikes again (May 13, 2008) : Article de Jonathan Corbet
* "kill the Big Kernel Lock (BKL)" tree (14 May 2008) : email d'Ingo
* Removing the Big Kernel Lock (May 15, 2008) : Article par Jeremy (Kerneltrap)
* Kill BKL Vol. 2 (May 21, 2008) : Article de Jonathan Corbet
Ingo maintient une branche git (enfin, il me semble que ça soit une branche) qui vise à supprimer le BKL, c'est-à-dire utiliser plusieurs petits verrous pour chaque sous-système :
http://git.kernel.org/?p=linux/kernel/git/tip/linux-2.6-tip.(...)
La suppressin du BKL dans ReiserFS a montré un gain significatif de performances.
http://www.linux-magazine.com/Online/News/Reiserfs-Experienc(...)
Pendant ce temps, FreeBSD supprime progression son BKL avec le travail du groupe SMPng, dont le travail a débuté en 2003.
http://www.freebsd.org/smp/#status
« While limited sections of the FreeBSD kernel still require Giant, especially more obscure device drivers and file systems, most parts of the kernel now neither require nor run with the Giant lock »
À priori, FreeBSD est plus en avance que Linux au sujet du BKL.
[^] # Re: Une coquille, une question
Posté par Victor STINNER (site web personnel) . Évalué à 6.
* The Big Kernel Lock lives on: http://lwn.net/Articles/86859/
* tty: BKL pushdown: http://lwn.net/Articles/268721/
* The big kernel lock strikes again: http://lwn.net/Articles/281938/
* "kill the Big Kernel Lock (BKL)" tree: http://lwn.net/Articles/282319/
* Removing the Big Kernel Lock: http://kerneltrap.org/Linux/Removing_the_Big_Kernel_Lock
* Kill BKL Vol. 2: http://lwn.net/Articles/283066/
Raah, je lis sans arrêt "Kill Bill".
[^] # Re: Une coquille, une question
Posté par patrick_g (site web personnel) . Évalué à 5.
[^] # Re: Une coquille, une question
Posté par fweisbec . Évalué à 10.
Parce que le soucis c'est que dans cette branche, le BKL est transformé en mutex.
Ca permet de voir ce que ça donne lorsque le bkl est converti en verrou traditionnel.
Donc avec cette branche le noyau crash assez vite, dû au fait qu'on verrouille le gros
mutex recursivement et donc ça crée un interblocage.
Cette branche est (était?) un excellent outil parce que justement ça permettait de savoir où
ça crashait, et aussi de voir les problèmes d'inversion de dépendance (grace à lockdep) qui
ne peuvent pas être vérifiés avec le BKL normal.
En bref c'est un excellent outil pour débusquer la bête, par contre si cette branche venait
à être appliquée dans le noyau principal, ce serait un désastre pour sa stabilité :-)
Pour ce qui est de la branche reiserfs/kill-the-bkl http://git.kernel.org/?p=linux/kernel/git/frederic/random-tr(...) (dont je suis l'heureux papa :-), les performances sont bien meilleures lorsqu'il s'agit d'écritures parallèles sur différentes partitions, par contre sur une seule partition c'est pas encore ça.
Le soucis c'est que j'avais fait quelques optimisations qui ont fini par rattraper les performances de la version bkl, voire même de les dépasser dans la plupart des cas. Mais on a découvert plus tard que cette optimisation avait créé une inversion de dépendance de vérrou.
Il va donc falloir que je fasse quelques pas en arrière et trouver d'autres optimisations.
J'espère pouvoir en arriver à bout pour 2.6.33, normalement ça devrait aller.
Sinon les efforts concernant le balayage du bkl se sont egrainés, il ya eu quelques contributions par ci par là qui devraient faire leur chemin pour le noyau 2.6.32
En fait c'est vrai que le bkl a été dégagé de la plupart des coins du noyau, mais il reste encore beaucoup utilisé mine de rien, sporadiquement dans des coins lugubres du noyau (tty, block...). Et c'est un gros soucis pour les developpeurs du patch temps réels. En particulier parce qu'ils sont en train de faire plein d'efforts pour intégrer les patchs temps réels dans la branche principale. Ca va assez vite d'ailleurs, mais leur plus gros soucis c'est le bkl qui crée d'enormes latences. Dans la branche temps-réel, ils ont un patch pour ça qui rend le bkl préemptible. Mais Linus ne veut pas de ce patch parce que les gens ne trouverons plus de bonne raisons à se consacrer au balayage du bkl s'il l'applique, alors les développeurs temps réels n'ont rien d'autres à faire que de le dégager.
Tiens par exemple Thomas Gleixner a ouvert une page là-dessus avec l'état d'avancement:
http://rt.wiki.kernel.org/index.php/Big_Kernel_Lock
[^] # Re: Une coquille, une question
Posté par patrick_g (site web personnel) . Évalué à 2.
Par curiosité pourquoi avoir choisi de bosser sur reiserfs qui n'est pas, c'est le moins qu'on puisse dire, le fs le plus utilisé sous Linux et qui le sera de moins en moins ?
[^] # Re: Une coquille, une question
Posté par fweisbec . Évalué à 10.
En fait je bossais sur cette branche d'Ingo qui convertissait le BKL en mutex.
Et puis comme ma machine se figeait complètement dès qu'elle touchait à mes partitions reiserfs, je me suis dit que je commencerais bien par là. D'autant que j'avais déjà bossé un chouilla sur reiserfs (un parseur pour le Hachoir de Victor Stinner).
C'est là que la naiveté commence. Je pensais que construire un simple lock basé sur un mutex pouvant être verrouillé recursivement (donc juste avec un compteur de référence de vérrouillage en plus) suffirait pour l'affaire.
Mais non. Le bkl a d'autres propriétés lamentables que le fait de pouvoir être verrouillé recursivement: il est implicitement relaché lorsqu'une tâche dort, et réattribué lorsqu'elle se réveille. Ce qui n'est pas le cas d'un mutex.
Ce qui fait qu'il y a plein de parties dans reiserfs qui comptent sur le fait qu'en dormant à tel endroit, le vérrou du systeme de fichier est relaché laissant place à un autre utilisateur.
Un cas clinique: une partie du code tombe sur des données qui ont besoin d'être flushées (= écrites sur le disque) avant de continuer, alors il dort, le vérrou se relâche implictement, laissant la place à un thread spécifique qui va flusher justement. Car ce flusher a lui aussi besoin du vérrou pour accéder aux données à écrire.
Mais voilà, avec un mutex il faut relâcher le vérrou explicitement.
Et reiserfs est bourré d'endroits comme ça.
Mais bon la majeure partie de ce boulot est terminé.
L'autre problème c'est que le bkl est un spinlock, donc plus rapide qu'un mutex car le spinlock boucle et prend le vérrou dés qu'il peut, alors qu'un mutex va faire dormir le processus en attendant. D'un autre côté le mutex va permettre à un autre processus de s'executer, ce qui est bien en cas de vérrou vérouillé longtemps. Mais s'il n'est pas vérrouillé longtemps, on perd du temps à switcher d'un processus à un autre.
Bref, le mutex est un poil moins efficace (même si les mutex peuvent boucler depuis 2.6.30 dans certaines situations).
Donc le reste du boulot c'est rattrapper les pertes de performances induites par la conversion du bkl. Heureusement maintenant il y a perfcounters. Couplé avec ftrace, c'est un outil magique pour trouver les points faibles dans un code :-)
Un autre truc avec reiserfs: c'est l'un des derniers gros utilisateurs du bkl, donc sa dératisation est plutôt désirée. Même s'il n'est plus dans les systèmes de fichiers les plus utilisés, il reste encore beaucoup utilisé (la migration de système de fichiers sur plein de serveurs, ça peut coûter cher).
[^] # Re: Une coquille, une question
Posté par Sylvain Blandel . Évalué à 0.
Et grand bravo à Patrick_g pour sa dépêche.
# kilo
Posté par Gof (site web personnel) . Évalué à 1.
Et encore une erreur dans la dépêche de patrick_g :-)
kilo veux dire 1000
Or ici, c'est bien 4 * 1024 soit 4 kibi octets.
[^] # Re: kilo
Posté par Strash . Évalué à 9.
[^] # Re: kilo
Posté par Pierre Jarillon (site web personnel) . Évalué à 3.
[^] # Re: kilo
Posté par CrEv (site web personnel) . Évalué à 9.
ha mais parce que quelqu'un utilise _vraiment_ ces unités ?
[^] # Re: kilo
Posté par Zorro (site web personnel) . Évalué à 2.
[^] # Re: kilo
Posté par Nicolas Boulay (site web personnel) . Évalué à 7.
"La première sécurité est la liberté"
[^] # Re: kilo
Posté par CrEv (site web personnel) . Évalué à 1.
parce que faut croire qu'on a soit pas les mêmes outils, soit pas le même linux ;)
[~] df
...
/dev/sda7 15G 14G 682M 96% /home
...
En fait j'ai même ni i, ni o, ni B et je sais très bien de quoi ça parle justement...
[^] # Re: kilo
Posté par Benoît Sibaud (site web personnel) . Évalué à 6.
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/hda2 343M 238M 87M 74% /
$ df -h /dev/hda2
Sys. de fich. Tail. Occ. Disp. %Occ. Monté sur
/dev/hda2 327M 227M 83M 74% /
$ du -h /boot/vmlinuz-2.6.29-1-686
1,7M /boot/vmlinuz-2.6.29-1-686
$ du --si /boot/vmlinuz-2.6.29-1-686
1,8M /boot/vmlinuz-2.6.29-1-686
...
[^] # Re: kilo
Posté par CrEv (site web personnel) . Évalué à 2.
[^] # Re: kilo
Posté par huitopy . Évalué à 1.
[^] # Re: kilo
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 6.
[^] # Re: kilo
Posté par gnumdk (site web personnel) . Évalué à 3.
[^] # Re: kilo
Posté par Victor STINNER (site web personnel) . Évalué à 5.
Nan je déconne, MiB c'est Mailinblack !
[^] # Re: kilo
Posté par Larry Cow . Évalué à 2.
Toutes mes condoléances...
[^] # Re: kilo
Posté par Pierre Tramo (site web personnel) . Évalué à 5.
[^] # Re: kilo
Posté par Brice Goglin . Évalué à 3.
[^] # Re: kilo
Posté par liberforce (site web personnel) . Évalué à 7.
[^] # Re: kilo
Posté par Zenitram (site web personnel) . Évalué à 4.
Oui, moi tout le temps, cf ma page perso, pour réussir à expliquer que non, 1 MB n'est pas 1000000 d'octets quand "MB" est affiché par certains à la place de MiB. C'est encore plus dur à expliquer quand un MP3 à 128 Kbps veut bien dire, lui, 128000 bps...
La différenciation devient de plus en plus importante, surtout quand les débits sont eux comptés (musique, vidéo, réseau...) avec 1 K = 1000, et les tailles de fichiers avec 1 K(i) = 1024. Et l'importance croit avec l'augmentation des volumes ( 1 To = 0.93 Tio, soit 7% de moins quand même... Notez que les disques dur sont vendus avec 1K = 1000 de nos jours)
[^] # Re: kilo
Posté par thedude . Évalué à 2.
ils l'ont toujours ete non?
Aussi loin que je me rappelle en tout cas.
On les comprends aisement cela dit, ca gonfle leurs chiffres...
[^] # Re: kilo
Posté par Zenitram (site web personnel) . Évalué à 2.
Non.
Je ne me rappelle plus exactement à quel moment ni quelle capacité, je taperai très grosso modo dans le début des années 2000 vers les capacités de 1 Go. Et après quelle marque a commencé ce jeu, mes souvenirs me font défauts, les salauds...
Aussi loin que je me rappelle en tout cas.
Voila, tu sais maintenant que je suis plus vieux que toi (dans l'informatique en tous cas)
[^] # Re: kilo
Posté par thedude . Évalué à 2.
Ou pas.
Je peux etre bien plus vieux et avoir une memoire en compote
:-P
Bref, merci de la precision (et au passage, rien a voir, mais merci pour mediainfo, il m'a pas mal servi le we dernier).
[^] # Re: kilo
Posté par Maxime G (site web personnel) . Évalué à 4.
Ça ne vous rappelle rien ?
Ah cet époque, quelle déception quant on en été réduit à compter les Ko après zippage pour faire rentrer ça sur une disquette et qu'on se disait :
"1.43M, ça passe !!!"
et ben non !
Maudis marketers !
[^] # Disquette "1.44 MB"
Posté par Zenitram (site web personnel) . Évalué à 10.
C'était encore plus vicieux.
* Un disquette de "720 KB" faisait bien 720 KiB en réalité (2 faces * 80 pistes * 9 secteurs * 512 octets), soit 737 280 octets.
* Une disquette de "1.44 MB": on double la densité (2 faces * 80 pistes * 18 secteurs * 512 octets), donc ça fait 1440 KiB, tout le monde suit? Et la, le drame, les marketeurs divisent pas 1000 pour donner 1.44 MB. Ce MB signifie donc 1000*1024, encore plus bâtard!
Une disquette de 1.44 MB fait en réalité 1.44*1000*1024 = 1.40625 MiB.
Bref, une jolie merde qui mixe 1K = 1024 et 1M = 1000, c'est-il pas joli comme tambouille?
Tout ça ne nous rajeunit pas...
[^] # Re: Disquette "1.44 MB"
Posté par 🚲 Tanguy Ortolo (site web personnel) . Évalué à 2.
Sans compter les japonais qui avaient des disquettes quadruple densité, eux.
[^] # Re: kilo
Posté par benoar . Évalué à 3.
[^] # Re: kilo
Posté par boq . Évalué à 4.
Sinon c'est 1024.
Enfin c'était comme ça à la base, maintenant si les marketeux se mettent à tout mélanger pour nous entuberappâter, effectivement le i n'est plus de trop.
[^] # Re: kilo
Posté par benoar . Évalué à 3.
[^] # Re: kilo
Posté par François B. . Évalué à 4.
Le multiplicateur 1000 sur les unités est un k minuscule pour ne pas confondre avec l'unité de température.
[^] # Re: kilo
Posté par Maxime (site web personnel) . Évalué à 8.
Il suffit par exemple de commencer sur des calculs de physique, d'électronique, etc ou tu fait des calculs de bande passante où tu as des données de calcul en MHz et des informations sur l'échantillonnage etc. Tu peux pas mélanger d'un coté des Mega et de l'autre des "Mega" au sens informatique (2^20), ça fini en des erreurs à la fin...
Alors faut arrêter avec cet abus de notation, utilisons les Mebi, Kibi &co ! Avec une seule lettre, on retire *enfin* une ambiguïté ! C'est une norme assez récente (1999 ?) ce qui explique sa faible utilisation.
[^] # Re: kilo
Posté par Boa Treize (site web personnel) . Évalué à 3.
[^] # Re: kilo
Posté par Thomas Douillard . Évalué à 4.
[^] # Re: kilo
Posté par Maxime (site web personnel) . Évalué à 3.
C'est vrai que je n'avais pas pris en compte la "beauté" des noms... Je pensais pas que ça pouvais vraiment avoir tant d'importance...
[^] # Re: kilo
Posté par teoB . Évalué à 1.
# radeon KMS
Posté par med . Évalué à 10.
[^] # Re: radeon KMS
Posté par Ririsoft . Évalué à 4.
Merci pour l'info en tout cas, j'étais désespéré de voir que KMS n'arrivait que pour les vieux chipsets d'ATI ...
Il semblerait même que les heureux utilisateurs de Fedora pourront en bénéficier dès F12 (avant la sortie officielle du noyau 2.6.32). D'après la source que tu cites les patchs sont dans la branche de développement.
A moins que je n'ai pas tout compris ?
[^] # Re: radeon KMS
Posté par med . Évalué à 4.
[^] # Re: radeon KMS
Posté par glisse . Évalué à 5.
[^] # Re: radeon KMS
Posté par Davy Defaud . Évalué à 3.
Que manque-t-il encore pour que l'on puisse utiliser officiellement DRI2 et le Redirected Direct Rendering sur les matériels ATI/AMD (le mien est un "vieux" R580) dont ce nouveau noyau implémente déjà (quoique en déclaré non stable) ledit KMS(+TMM) ?
- la sortie officielle de Mesa 7.6 (récemment gelé) contenant radeon-rewrite ?
- le serveur Xorg 1.7 (récemment gelé également), contenant le dernier pilote DDX pour ATI ?
- d'autres bidules (libdrm...) ?...
Et puisque l'occasion m'est donnée, j'en profite également pour te remercier de ton immense contribution. Je vais peut-être très bientôt pouvoir utiliser convenablement ma carte graphique avec mon SE préféré et ce sera en partie grâce à toi.
Cela devenait d'autant plus urgent qu'ATI a définitivement abandonné le support des GPU < R600 dans ses pilotes FGLRX. Pilotes qui n'ont jamais tenu leurs promesses par ailleurs, toute nouvelle fonction étant implémentée 2 ans après NVidia (GLX_EXT_texture_from_pixmap permettant le support de Compiz, Redirected Direct Rendering...) !
[^] # Re: radeon KMS
Posté par glisse . Évalué à 5.
[^] # Re: radeon KMS
Posté par Davy Defaud . Évalué à 2.
Pascal Terjan devrait être en mesure de nous dire s'il est prévu de l'activer sur le noyau desktop final de la Mandriva 2010.0 ? Il y a le noyau tmb au pire, mais ça restera plus confidentiel.
Par ailleurs, Pascal, est-il déjà trop tard, comme je le crains, pour envisager l'inclusion des autres éléments nécessaires (serveur X.org 1.7, mesa 7.6...). Est-il envisagé ou envisageable de fournir tout cela en cooker/testing pour les plus aventureux ?
[^] # Re: radeon KMS
Posté par moi1392 . Évalué à 1.
Xorg, c'est xserver plus tout un tas d'outils et de libs qui vont avec et qui font que tu as sur une machine un serveur graphique fonctionnel et des clients qui peuvent s'y connecter.
La prochaine version de Xorg est la 7.5, car depuis la modularisation avec Xorg 7.0, xserver et les autres modules peuvent avoir des sorties désynchronisées (il y en a eu 2 pour xserver par exemple, la 1.3 et la 1.6)
[^] # Re: radeon KMS
Posté par Davy Defaud . Évalué à 3.
Je m'étais mal exprimé et il fallait bien évidemment comprendre xserver 1.7, mais vu le n° de version - 1.7 -, je pense que tout le monde avait compris que je parlais du serveur X...
Pour info, un serveur X 1.7-RC1 pour les Mandriviens est dispo depuis ce soir en i586 et d'ici 2 jours pour les x86_64 (http://lists.mandriva.com/cooker/2009-09/msg00300.php).
De plus, le premier noyau 2.6.31 final de chez Mandriva est dispo... avec KMS pour ATI (< R600) activé !
Voilà qui répond à deux de mes interrogations précédentes.
Il manque encore une mise à jour de mesa et de libdrm (compilés en expérimental d'après ce que me dit Jérôme ci-après).
On y est presque !!!
[^] # Re: radeon KMS
Posté par liberforce (site web personnel) . Évalué à 3.
Damned, et la RC1 qui est censée sortir demain ! Possesseurs de cartes ATI (R350 pour moi), à vos machines !
[^] # Re: radeon KMS
Posté par Davy Defaud . Évalué à 3.
«
* mar. sept. 15 2009 Herton Ronaldo Krzesinski <herton@mandriva.com.br> 2.6.31-2mnb
o Thomas Backlund <tmb@mandriva.org>
- disable radeon kernel modesetting again as it breaks too many systems
»
[^] # Re: radeon KMS
Posté par glisse . Évalué à 1.
[^] # Re: radeon KMS
Posté par FantastIX . Évalué à 4.
J'en suis un. Et j'ose dire que je brûle d'impatience (c'est un euphémisme) de voir arriver KMS et Mesa 7.6. Un article publié en août sur le site de Phoronix [http://www.phoronix.com/scan.php?page=news_item&px=NzQyN(...)] a déclaré que glxgears fonctionnait sur les modèles R6xx et R7xxx. Le code est fonctionnel (Yessssssss!) et n'attend plus qu'à être publié, déployé et testé.
[^] # Re: radeon KMS
Posté par glisse . Évalué à 2.
[^] # Re: radeon KMS
Posté par FantastIX . Évalué à 1.
Possible. Mais en attendant, ça a au moins le mérite d'exister!
# deplacement de nouvelles?
Posté par mscestdelamerde . Évalué à -2.
[^] # Re: deplacement de nouvelles?
Posté par Sarcastic . Évalué à 3.
[^] # Re: deplacement de nouvelles?
Posté par steph1978 . Évalué à 2.
le site est ainsi fait que les dépèches sont par ordre chronologique, ce qui permet de le lire régulièrement sans en louper. d'autres part, toutes les dépèches ont leur légitimité.
celles sur le noyau se repèrent facilement grâce à l'icone.
je doute que tu sois tombé dessus pas hazard, ça n'a pas mon cas.
# A propos de la faille de sécurité..
Posté par Romain Be. . Évalué à 1.
A propos de la faille de sécurité SELinux et compagnie. Ce que le lis là:
http://lwn.net/Articles/347006/
C'est qu'en fait la vraie faille concernait l'utilisation de certaines opérations sur les socket pour lesquelles les pointeurs définissant les opérations applicables sur la socket étaient non initialisés.
Ainsi, pour pouvoir exploiter la faille, il fallait alors faire remplir l'adressage mémoire initial, zero, avec la fonction à executer, et on se retrouve avec la possibilité d'exécuter n'importe quoi avec les droit root.
Ainsi, le paramètre qui permet de choisir un adressage mémoire minimal plus grand que zero est une façon d'empecher l'exploitation de la faille et non la faille elle-même.
[^] # Re: A propos de la faille de sécurité..
Posté par Victor STINNER (site web personnel) . Évalué à 5.
http://linuxfr.org/2009/07/18/25744.html
http://linuxfr.org/2009/07/24/25761.html
http://linuxfr.org/~patrick_g/28661.html
C'est grâce à au travail de Brad que la sécurité de SELinux a été renforcée dans Linux 2.6.31.
Au sujet de mmap_min_addr, je pense que cet article explique bien l'histoire.
[^] # Re: A propos de la faille de sécurité..
Posté par Romain Be. . Évalué à 1.
Il y a d'un coté une faille du noyau linux portant sur l'execution de code mappé à l'adresse mémoire zero, c'est la faille.
De l'autre, il y a un mécanisme de protection générique, mmap_min_addr qui permet en théorie d'empecher l'exploitation de la faille.
Enfin il y a SELinux qui, du fait d'un mauvais design, permet de contourner le mécanisme de protection générique mmap_min_addr.
Du point de vue de SELinux, c'est plus un problème de « defect by design » qu'à proprement parler une « faille ». Le fonctionnement utilisé est celui prévu (maladroitement) par les developpeurs.
La simple façon de s'en rendre compte, c'est que sans la faille noyau, il n'y aurait rien à exploiter, SELinux ou pas...
Romain
[^] # Re: A propos de la faille de sécurité..
Posté par zebra3 . Évalué à -2.
J'avoue que qualifier le fonctionnement de SELinux de « maladroit » me laisse dubitatif, sachant que ce dernier a été conçu par la NSA, la plus grande concentration de mathématiciens au monde et dont le budget est supérieur à celui de la CIA.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: A propos de la faille de sécurité..
Posté par patrick_g (site web personnel) . Évalué à 4.
Ce n'est pas SELinux en soi qui a une faille.
[^] # Re: A propos de la faille de sécurité..
Posté par Romain Be. . Évalué à 1.
Ce qui est maladroit c'est qu'il y a conflit entre deux directives. D'un coté un directive hors SELinux interdit de mapper à l'adresse zero, de l'autre une directive SELinux l'autorise.
Au final, en matière de sécurité, on voudrait toujours avoir comme combinaisons de plusieurs restrictions la restriction maximale. Ce n'est pas la cas ici, puisque SELinux permet alors d'affaiblir la sécurité du système en donnant la possibilité de contourner une autre directive de sécurité plus stricte.
[^] # Re: A propos de la faille de sécurité..
Posté par briaeros007 . Évalué à 4.
Ils travaillent tous sur SELinux ?
Amha selinux c'est encore moins q'un projet "auxiliaire" pour eux (et en main d'oeuvre, et en budget).
[^] # Re: A propos de la faille de sécurité..
Posté par Sytoka Modon (site web personnel) . Évalué à 10.
[^] # Re: A propos de la faille de sécurité..
Posté par zebra3 . Évalué à 3.
Vu l'importance des systèmes d'informations de nos jours, elle n'a certainement pas dû mener ce projet en dilettante.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: A propos de la faille de sécurité..
Posté par briaeros007 . Évalué à 5.
Non.
Linux reste le seul système d'exploitation open source, sur lequel elle se soit penchée ET a distribué les modules implémenté.
Bref, on sait qu'ils ont travaillé/travaille sur linux, on ne sait rien des autres.
(par contre on sait que la nsa a déjà collaboré étroitement avec microsoft par ex).
[^] # Re: A propos de la faille de sécurité..
Posté par Gniarf . Évalué à 5.
tu veux qu'on parle du budget et des talents de Microsoft quand on constate Windows Vista ou Windows ME ?
[^] # Re: A propos de la faille de sécurité..
Posté par zebra3 . Évalué à 6.
La NSA a pour contraintes un maximum de sécurité et de fiabilité, sans contrepartie de résultats commerciaux ni même de calendrier (en tout les cas, bien moins qu'une entreprise). Elle peut donc mettre les moyens sur ce qu'elle estime important.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: A propos de la faille de sécurité..
Posté par neologix . Évalué à 2.
Le problème de SELinux, c'est justement qu'il faudrait bosser à la NSA pour arriver à pondre une configuration correcte. Pour le commun des mortels, c'est impossible à gérer.
Ensuite, pour ce qui est du budget et de la concentration de génies à la CIA et à la NSA, il suffit de se renseigner sur les événements précédant 9/11 pour se rendre compte de leur incompétence...
# Systèmes de fichiers à la pelle
Posté par NickNolte . Évalué à 3.
Est-ce que c'est réalisable facilement avec EXT4?
[^] # Re: Systèmes de fichiers à la pelle
Posté par Sphax . Évalué à 3.
[^] # Re: Systèmes de fichiers à la pelle
Posté par zebra3 . Évalué à 4.
Tu as eu des soucis ?
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Systèmes de fichiers à la pelle
Posté par Victor . Évalué à 2.
# Abandon des anciens drivers IDE ?
Posté par fred . Évalué à 2.
[^] # Re: Abandon des anciens drivers IDE ?
Posté par benoar . Évalué à 2.
# cooker
Posté par Maurice Rosenfelder (site web personnel) . Évalué à 2.
C'est pendant que j'attends ça que j'écris cet article :
Vous devriez relancer système pour kernel-desktop-2.6.31-1mnb
writing /var/lib/rpm/installed-through-deps.list
The following packages:
kernel-desktop-2.6.31-0.rc8.1mnb-1-1mnb2.i586
kernel-desktop-devel-2.6.31-0.rc8.1mnb-1-1mnb2.i586
kernel-desktop-devel-2.6.31-0.rc9.1mnb-1-1mnb2.i586
libltdl-devel-2.2.6-6mdv2009.1.i586
libmediadevicelib1-2.1.1-3mdv2010.0.i586
libtool-2.2.6-6mdv2009.1.i586
libtool-base-2.2.6-6mdv2009.1.i586
are now orphaned, if you wish to remove them, you can use "urpme --auto-orphans"
Il on une ligne directe avec linus, chez mandriva ?
# Support des cartes son Creative X-Fi
Posté par Laurent Léonard (site web personnel) . Évalué à 3.
[^] # Re: Support des cartes son Creative X-Fi
Posté par turanga leela . Évalué à 4.
A quand la prise en charge native des lecteurs d'empreintes digitales??
# Merci...
Posté par Hugues (site web personnel) . Évalué à 2.
# Merci patrick :-)
Posté par 2PetitsVerres . Évalué à 3.
Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.
[^] # Re: Merci patrick :-)
Posté par zebra3 . Évalué à 3.
(sur un refrain bien connu, pas du tout à la mode bien qu'étant pourtant d'actualité...)
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
# 1er commentaire sur +linux
Posté par super67momo . Évalué à -10.
[^] # Re: 1er commentaire sur +linux
Posté par windu.2b . Évalué à 2.
JAMAIS !!!
Sinon, si tu veux écrire correctement, tu as le droit de demander : "qu'en est-il [...] ?"
PS : ce n'est pas la seule faute, mais c'est la plus agressive...
[^] # Re: 1er commentaire sur +linux
Posté par Pinaraf . Évalué à 4.
[^] # Re: 1er commentaire sur +linux
Posté par Meku (site web personnel) . Évalué à 6.
1) C'est quoi la lourdeur du C ? (en particulier, pour écrire un noyau).
2) Oui, Ubuntu Karmic Kokakola embarquera le 2.6.31.
3) T'as des chiffres ? Un millier de développeurs en moyenne sur le noyau, c'est pas beaucoup ? Chez Microsoft ils ont mis 10 000 personnes peut-être ?
4) Quelles interfaces en particulier ? Linux gère les systèmes multi-processeurs. Après les API, c'est peut-être pas au noyau de les implémenter mais à une couche supérieure... Ta question manque de précision.
Qu'est ce qui t'empêche de quitter Windows XP ? Et quel est le lien plus précisément entre tes questions et le fait de t'évader de Windows ? Tu compte coder sur le noyau mais t'aimes pas le C ? Tu possèdes déjà une machine supportant l'USB 3 et des périphériques USB 3 que t'as besoin du 2.6.31 dans la prochaine Ubuntu ? (enfin non, ça sera pas ce point qui te retiendra sous Windows). Explique-nous. C'est très mystérieux tout ça.
J'ai une dernière question. Il y a un passage que je n'ai pas réussi à décoder dans le titre de ton message: « 1er commentaire sur +linux ». Que signifie le « +linux » ? (c'est le « + » qui m'intrigue).
[^] # Re: 1er commentaire sur +linux
Posté par Nicolas Boulay (site web personnel) . Évalué à 6.
Un millier en moyenne _par release_, mais ce n'est pas forcément les même ! Ce qui fait encore plus de personne impliqués.
"La première sécurité est la liberté"
[^] # Re: 1er commentaire sur +linux
Posté par NeoX . Évalué à 8.
le millier de developpeur c'est UNIQUEMENT pour noyau
apres il y a le millier de developpeur pour KDE/GNOME, la centaine de developpeur pour certains logiciels, le developpeur unique pour d'autres :p
[^] # Re: 1er commentaire sur +linux
Posté par Spyhawk . Évalué à 10.
# Des pilotes audio en espace utilisateur ?
Posté par psychoslave__ (site web personnel) . Évalué à 2.
Mais un pilote son en espace utilisateur, c'est une mauvaise idée si on fait du temps réel, il y aura de grosses latences, non ? :\
[^] # Re: Des pilotes audio en espace utilisateur ?
Posté par patrick_g (site web personnel) . Évalué à 2.
[^] # Re: Des pilotes audio en espace utilisateur ?
Posté par psychoslave__ (site web personnel) . Évalué à 5.
[^] # Re: Des pilotes audio en espace utilisateur ?
Posté par Pierre Bourdon . Évalué à 1.
(oui, on est vendredi, toussa)
# gestion des coeurs multiples.
Posté par super67momo . Évalué à -10.
[^] # Re: gestion des coeurs multiples.
Posté par benoar . Évalué à 3.
Sinon, essaye d'apprendre (c'est valable pour la syntaxe et l'orthographe aussi) avant de porter certains jugements, ça t'évitera de finir dans les abîmes du moinssage.
[^] # Re: gestion des coeurs multiples.
Posté par Meku (site web personnel) . Évalué à 4.
- Ça veut dire quoi que l'importation de vidéo(s ?) de ta partition windows était très mauvaise ?
- Peux-tu préciser ta dernière question sur l'interopérabilité ? car c'est super vaste...
As-tu lu les remarques que l'on t'a adressé plus haut ? Je ne constate pas de progrès dans la rédaction et tes questions et affirmations sont toujours très superficielles : on a du mal à comprendre ce qu'il s'est mal passé, ou ce que tu voudrais savoir exactement.
[^] # Re: gestion des coeurs multiples.
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
"La première sécurité est la liberté"
[^] # Re: gestion des coeurs multiples.
Posté par grid . Évalué à 5.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.