Le détail des évolutions, nouveautés et prévisions est dans la seconde partie de la dépêche (qui est sous licence CC BY-SA).
Le sommaire...
- La phase de test
- Les nouveautés
- En bref
- Documentation technique et maintenance du code
- Le bilan en chiffres
- Pour la suite
La phase de test (↑)
RC-1
Quinze jours après la sortie du noyau 2.6.34, Linus Torvalds a annoncé le 30 mai l'arrivée de la première version candidate RC-1 : « Cela fait deux semaines et donc la période de merge est fermée. Et s'il vous plaît essayons de respecter ça cette fois. Ne m'envoyez plus aucune demande, à part si c'est pour corriger une vraie régression ou un bug majeur, OK ? Cette fois il n'y a pas de nouveau système de fichiers (surprise, surprise) mais il y a évidemment eu du boulot sur les systèmes existants (btrfs, ceph, cifs, ext4, nfs, ocfs2 et xfs) ainsi que sur la couche VFS (nettoyage sur les superblocks et les quotas en particulier). Mais comme d'habitude le gros des changements se trouve dans les pilotes. Environ les deux tiers des changements pour être exact. Les pilotes infiniband, réseau ou staging représentent la plus grande part mais il y a des commits un peu partout : drm, son, media, usb, périphériques d'entrée, etc. Ce qui est réconfortant, c'est de constater que nous continuons d'avoir de bonnes statistiques avec environ 8 500 commits et presque 1 000 développeurs différents. Bien entendu c'est biaisé puisque la médiane de commit par personne est de seulement trois… mais je pense que c'est exactement ce que nous voulons voir dans un environnement de développement en bonne santé ».RC-2
Le 5 juin c'est la RC-2 qui a fait son apparition et Linus a annoncé que le cycle de développement allait être un peu différent cette fois-ci du fait de contraintes personnelles : « Bon la RC-2 est disponible et, je l'espère, elle corrige plus de problèmes qu'elle n'en introduit. Je ne suis pas très content de sa taille. C'est vrai qu'elle n'est pas aussi grosse que la RC-2 du cycle précédent mais cette dernière était vraiment inhabituelle. J'espérais vraiment un cycle de release plus calme cette fois-ci. En fait je vais forcer la RC-3 à être saine parce que la semaine prochaine est la dernière semaine d'école pour mes enfants. Et quand les gosses ne vont plus être à l'école je vais être off-line pour un moment. Je ne veux _vraiment_ pas intégrer le moindre truc un peu effrayant pour cette RC-3. Les demandes de pull ont intérêt à être uniquement pour des corrections de bugs parce que cette fois je ne laisserai rien passer d'autre ».RC-3
Linus a tenu parole et il a été particulièrement strict dans son acceptation des patchs soumis pour la RC-3 du 11 juin. De nombreux développeurs se sont vus opposer des refus fermes et ceux qui mélangeaient les corrections et les nouvelles fonctions dans leurs branches ont été vivement rabroués (« Tu as deux heures pour m'envoyer une demande de merge ne contenant que les corrections de bugs si tu veux faire partie de la RC-3 »). Cette politique a payé puisque le delta entre la RC-2 et la RC-3 est particulièrement réduit : « J'ai été intraitable pendant une semaine, peut-être même un peu trop, et ça veut dire que la RC-3 sera meilleure que ne l'était la RC-2. Non seulement nous avons eu des corrections de régressions mais en plus nous n'avons plus ce bug stupide de corruption mémoire qui a touché tellement de gens de diverses façons (selon la zone mémoire aléatoire qui était corrompue). Une des conséquences de mon inflexibilité est que cette RC-3 est sans doute la plus petite que nous ayons eu depuis longtemps. Le diff ressemble à ça : "165 files changed, 1624 insertions(+), 859 deletions(-)". En tout 159 commits, et le plus gros des changements consiste juste en des déplacements de fonctions dans iwl-agn.c plutôt qu'en de vraies modifications de lignes. Donc testez bien ! ».RC-4
Pendant que Linus faisait de la plongée en famille les amateurs de nouvelles versions candidates ont dû se morfondre puisqu'il a fallu attendre durant une loooongue période de plus de trois semaines pour voir finalement apparaître, le 4 juillet, la version RC-4 : « Hé les gars, il y a finalement une nouvelle RC disponible. Je suis rentré depuis une semaine et, à en juger par le genre de patchs et de demandes de pull que j'ai reçu, je dois dire que le fait d'avoir été strict pour la RC-3 a bien fonctionné. Le diff entre les deux RC est très raisonnable et j'espère que nous aurons un 2.6.35 dans les temps en dépit de mes vacances. C'est ma plus grande période loin du noyau depuis plusieurs années je crois. J'ai suivi mes mails sur mon téléphone mais je n'ai pas fait la moindre compilation et j'ai pris du bon temps sous l'eau ».RC-5
Après ses vacances de sybarite, Linus est revenu à un rythme plus habituel et a annoncé la disponibilité de la RC-5 le 12 juillet : « Nouvelle semaine, nouvelle RC. OK en fait ça fait huit jours mais bon. C'est tant mieux puisque j'ai pu merger des corrections supplémentaires aujourd'hui (des problèmes de son et des régressions dans V4L). Et j'ai aussi mergé le patch de minimisation defconfig de la branche ARM. Ce n'est que le début des changements dans defconfig mais comme ce patch supprime presque 200 _mille_ lignes c'est quand même un sacré truc. J'espère que ça va continuer et que nous aurons beaucoup moins de bruit defconfig dans nos futurs diffs et, on l'espère, aussi des nettoyages de code ».RC-6
C'est le 22 juillet dernier que Linus a annoncé la sixième version candidate du noyau 2.6.35 : « Bon je pense/j'espère que ce sera la dernière RC. Les choses ont été vraiment calmes et, même si cette RC a plus de commits que la RC-5 n'en a eu, ce n'est pas de beaucoup et rien ne me semble effrayant. Donc à ce stade ça ne rime à rien de faire traîner les choses pour cette version à moins que nous ne découvrions un truc bloquant. En plus, un des bugs corrigés dans cette RC-6 semble être un gros poisson. Le commit "Enable low power render writes on GEN3 hardware" de Dave Airlie pourrait être la solution pour le vieux problème de freeze sur certaines cartes Intel GM945. Donc, en dépit du fait que le commit ne fait qu'une ligne, cela pourrait être un truc assez important pour les gens ».Les nouveautés (↑)
La fonction cpu_stop
Créé par le développeur Tejun Heo, le mécanisme de cpu_stop a été incorporé dans le nouveau noyau. D'abord proposé sous le nom cpuhog en mars dernier, la fonction a été renommée à la demande de Peter Zijlstra car le nouveau nom de cpu_stop permet de faire le lien avec la fonction stop_machine. On a gagné en clarté sur l'utilité de la fonction (on comprend que c'est lié à stop_machine) mais on a un peu perdu de vue le mécanisme lui-même puisqu'en réalité cpu_stop ne stoppe pas le processeur ! Ce que fait ce patch, quand on fait appel à la fonction stop_one_cpu() qu'il propose, c'est qu'il monopolise à 100% un processeur particulier sans laisser aucun autre processus y accéder. Cela peut sembler un peu bizarre de vouloir faire ça, mais en fait nous allons voir que c'est très utile dans certains cas. Par exemple, pour la fonction stop_machine, qui est utilisée quand on veut tout figer sur un ordinateur avant de changer quelque chose de très important, comme par exemple remplacer un processeur, insérer des sondes dynamiques, etc. : jusque là cette fonction utilisait un mécanisme ressemblant quelque peu à cpu_stop (les workqueues) puisqu'elle faisait tourner un thread à haute priorité sur les divers processeurs. Le passage à cpu_stop permet, outre une factorisation du code, de corriger des dysfonctionnements sur les très grosses machines comme par exemple un temps de boot exagérément long. Dimitri Sivanich rapporte qu'un système SGI UV de 1024 processeurs passe de 30 minutes à seulement 12 lors d'une utilisation de stop_machine. Le mécanisme de migration de thread qui — comme son nom l'indique — prend un processus sur un processeur et le migre sur un autre processeur, est lui aussi modifié pour reposer sur cpu_stop. En effet, la première phase de la migration implique de faire sortir le thread du processeur. Quoi de mieux pour cela que de faire appel à cpu_stop qui monopolise le processeur pour lui tout seul ! On voit bien que le travail de Tejun Heo, outre le fait qu'il offre une nouvelle possibilité aux développeurs, permet surtout de nettoyer toutes les implémentations disparates (dans stop_machine, dans le migration thread etc.) et de les remplacer par un code sous-jacent unique et performant.Gestion de l'énergie
Le sous-système cpuidle du noyau 2.6.35 a été modifié par deux patchs notables qui vont permettre de mieux gérer la consommation d'énergie des processeurs de nos machines. – Le premier patch a été écrit par Len Brown qui travaille chez Intel et qui s'occupe habituellement du code noyau permettant la gestion de l'ACPI. Constatant que les tables ACPI de sa machine Dell étaient complètement fausses, et que chez les autres constructeurs ce n'était guère plus brillant, il a décidé d'écrire un pilote spécifique afin de corriger le problème. La norme ACPI s'occupe de gérer la consommation d'énergie des composants d'un ordinateur par l'intermédiaire de tables descriptives (Differentiated System Description Table) et d'un langage spécifique (ACPI Machine Language). Cette norme est extrêmement complexe et elle a été critiquée à de nombreuse reprises par les développeurs du noyau. Les constructeurs ne semblent pas faire preuve d'une grande fiabilité dans l'écriture des tables ACPI qui sont livrées avec leurs machines et cette situation énerve au plus haut point les développeurs Linux qui sont obligés de passer du temps à contourner ces tables ACPI fautives. Avec sa franchise habituelle, Linus Torvalds a fait connaître son sentiment sur cette norme (« ACPI was designed by a group of monkeys high on LSD ») mais, en dépit de cette mauvaise humeur, il a bien fallu se résoudre à la prendre en charge du fait de son universalité. Le travail de Len Brown est toutefois original car, avec ce patch spécifique, il a choisi d'écrire un pilote spécial, nommé intel_idle, qui gère tous les processeurs de type Nehalem et Atom. Ce pilote ne dépend pas des tables ACPI et n'est donc pas impacté par un bug qui existerait dans celles-ci. Avec intel_idle, la machine se comportera correctement même si les tables ACPI sont fausses puisque seul le pilote Linux sera utilisé. En outre, les tables ACPI indiquent seulement (quand elles sont justes) le temps de latence de sortie d'hibernation alors que, selon Len Brown, l'information réellement pertinente est le seuil de consommation. Il a bien entendu pris soin d'indiquer ce seuil dans son pilote. Sur l'ordinateur Dell de Len, du fait d'un bug de la table ACPI, le processeur ne pouvait pas entrer dans un état d'hibernation plus profond que C1 et le mode Turbo était désactivé. Avec son patch spécifique intel_idle, le processeur peut entrer en hibernation dans tous les modes profonds (ce qui fait passer la consommation de 100 Watts à 85 Watts) et le mode Turbo fonctionne à nouveau. À noter que ce pilote est marqué EXPERIMENTAL pour le moment, mais Len Brown prévoit d'enlever cette marque dans le prochain noyau. – Le second patch modifiant les fonctions de gestion de l'énergie du noyau Linux 2.6.35 a été écrit par Arjan van de Ven, grand spécialiste de ce sujet puisqu'il est l'auteur de PowerTOP et de l'initiative Lesswatts.org. La fréquence du processeur d'une machine sous Linux est gérée par un « gouverneur » qui est chargé de prendre les meilleures décisions possibles. Quand le processeur n'a rien à faire, c'est l'infrastructure cpuidle qui est utilisée et qui gère le degré d'endormissement du processeur. Il doit choisir entre les fameux « C-States » pour ordonner au processeur de faire juste une sieste rapide (par exemple passer en C1) ou bien de jouer la belle au bois dormant en sommeil cryogénique (l'état C6 sur les machines modernes). L'ennui, c'est que ce gouverneur cpuidle n'a pas la possibilité de prédire le futur (c'est bien dommage) et qu'il ne sait pas à quelle quantité de travail le processeur aura à faire face à l'instant suivant. Il en est réduit à faire des prédictions sur le temps pendant lequel le processeur n'aura rien à faire (le temps pendant lequel il sera en « idle »). Pour prendre sa décision sur le degré d'endormissement idéal (le choix du C-State), le gouverneur se sert tout simplement du timer de la machine. Il évalue combien de temps il reste avant le prochain timer afin de savoir si il est rentable ou pas d'endormir le processeur dans l'état C1, C2 etc. Ce qui est ennuyeux avec cet algorithme, c'est que le prochain timer ne donne qu'une borne supérieure et que le processeur peut être réveillé bien avant par d'autres événements (une interruption matérielle par exemple). Ce qui serait bien, ce serait de pouvoir prédire également ces interruptions mais cela n'est, hélas, pas vraiment possible. Sans se laisser décourager par ce triste constat, Arjan a décidé que le noyau pouvait au moins détecter les interruptions répétitives. Pour cela le patch ajoute une fonction de mémorisation qui stocke les huit dernières interruptions et les compare à un seuil prédéfini. Avec cet algorithme très simple, il est possible de détecter des profils d'interruptions répétitifs comme, par exemple, le déplacement d'une souris, les charges réseau utilisant la fonction d'irq mitigation ou encore l'envoi de trames Wi-Fi de type beacon. Le patch d'Arjan améliore le taux de bonnes prédictions du gouverneur cpuidle et, dans son message sur la LKML, Arjan présente certains chiffres très encourageants. Par exemple avant le patch seulement 43.6% des prédictions de durée de idle étaient précises à un facteur 4 près par rapport à la réalité. Après l'application du patch, ce taux passe à 75.2% et l'infrastructure « cpuidle » peut donc endormir le processeur à meilleur escient.Compactage mémoire
Le patch de compactage mémoire écrit par Mel Gorman a été accepté dans le noyau Linux 2.6.35. Tout d'abord, il ne faut pas confondre ce patch avec le mécanisme ramzswap qui avait été évoqué dans la dépêche du noyau 2.6.33. Ramzswap est là pour augmenter artificiellement la capacité mémoire d'une machine grâce à la compression d'une partie des pages mémoires (par exemple on a 256 Mo de RAM, mais le système se comporte comme si on avait 512 Mo). De son côté, le but du patch « Memory compaction » de Mel Gorman est de réduire la fragmentation de la mémoire. En effet, après la phase d'allocation de la mémoire à un processus, les pages mémoires occupent des blocs physiques qui sont ensuite libérés lors des désallocations. Au fil du temps, la mémoire se retrouve fragmentée et le stock de blocs contigus libres se réduit. Pourtant, dans certains cas il est très important, voire absolument nécessaire, d'allouer une quantité de mémoire contiguë. Par exemple, le tampon DMA de nombreux périphériques réclame une quantité de mémoire contiguë. Du point de vue des performances, l'accès à de la mémoire non fragmentée peut également faire une grosse différence. En outre, le problème de la fragmentation peut empirer dans certains cas car les processeurs ne se limitent pas à des allocations de 4 Ko et ils peuvent — si l'OS le gère — utiliser le mécanisme des « huge pages » pour allouer d'un seul coup de grandes quantités de mémoire dans l'espace d'adressage. Évidemment, le taux de succès de l'allocation de ces « huge pages » dépend de façon critique de l'existence de zones mémoire contiguës et rend plus désirable que jamais une fonction de défragmentation. Le travail de Mel Gorman sur la réduction de la fragmentation mémoire a commencé il y a longtemps et a progressé à petit pas car le code de la mémoire virtuelle est notoirement complexe et sensible. Après son travail de 2006 sur les pages déplaçables (« GFP_MOVABLE ») il propose cette fois un mécanisme simple mais efficace de défragmentation. L'idée est de lancer deux scanneurs de pages au sein d'une zone mémoire. Le premier algorithme (nommé le « migration scanner ») démarre au début de la zone et liste toutes les pages déplaçables qui existent dans la zone (en se servant justement du flag GFP_MOVABLE). À chaque fois qu'il rencontre une page déplaçable, il l'ajoute à la liste migratepages. Le second algorithme (le « free scanner ») est lancé à partir de la fin de la zone mémoire et il recherche toutes les pages libres susceptibles d'accueillir des données. Quand il en trouve, il y déplace les pages listées dans la migratepages. Chaque algorithme progresse le long de la zone un peu comme pacman (c'est la phase de « compaction run ») et quand ils finissent par se rencontrer le travail est fini ! Le parcours des deux algorithmes ressemble donc un peu à ce chef-d'œuvre d'ascii-art : Début : [OO] Compression en cours : [-----OO------] Fin : [------------O<>O-------------] Selon les mots de Mel Gorman : « La méthode est un peu primitive, mais elle est simple à comprendre et une plus grande sophistication aurait impliqué des compteurs sur chaque pageblock. Cela aurait eu un gros impact sur le code d'allocation et cela seulement pour améliorer le compactage. Le compromis n'aurait pas été bon ». Pour lancer une défragmentation mémoire il existe trois méthodes :- Tout d'abord on peut défragmenter toute la mémoire en écrivant 1 dans /proc/sys/vm/compact_memory. Mel indique que cette méthode peut être utile, par exemple, pour un job scheduler qui va défragmenter toute la mémoire pour préparer le système et le placer dans un état optimum avant de lancer une application ;
- Ensuite, plus raffiné, on peut compacter juste un nœud en écrivant dans /sys/devices/system/node/nodeN/compact (on remplace N par l'identifiant du nœud) ;
- Enfin, si le noyau a été compilé avec l'option CONFIG_COMPACTION, le mécanisme de défragmentation se déclenche automatiquement en cas d'échec lors d'une allocation mémoire demandant plusieurs pages contiguës (c'est ce qu'on appelle des « high-order pages »). Dans ce dernier cas, la défragmentation s'arrête dès que l'allocation redevient possible (pas besoin d'attendre que les deux scanneurs se rencontrent).
- Taux de succès de l'allocation sur x86 avant le patch : 98 %
- Taux de succès de l'allocation sur x86 après le patch : 99 %
- Taux de succès de l'allocation sur x86-64 avant le patch : 95 %
- Taux de succès de l'allocation sur x86-64 après le patch : 98 %
- Taux de succès de l'allocation sur PPC64 avant le patch : 55 %
- Taux de succès de l'allocation sur PPC64 après le patch : 70 %
Le réseau avec RPS et RFS
Les patchs Receive Packet Steering et Receive Flow Steering qui améliorent les performances réseau ont été acceptés par Linus et incorporés dans la pile réseau du noyau 2.6.35. Le problème auquel les ingénieurs de Google ont choisi de s'attaquer à travers ces deux patchs est simple à énoncer : cette firme n'utilise pas de matériel exotique, mais plutôt des machines standard en grand nombre. Ces ordinateurs ont certes des processeurs multi-cœurs, mais leur carte réseau lambda ne peut traiter qu'une seule queue de paquets réseau à la fois. Comment faire pour utiliser au mieux un processeur multi-cœurs quand on a une carte réseau mono-queue ? Le problème ne se pose réellement que pour les paquets entrants. Pour ceux qui sortent, le système sait déjà comment découper son travail entre les processeurs avant d'envoyer ses ordres à la carte réseau (NIC). En revanche, le flot en entrée vient d'une seule source (la queue unique gérée par la carte réseau) et il est difficile de le découper intelligemment afin de distribuer la charge sur les divers cœurs de calcul. La solution évidente serait de changer de carte réseau pour en acheter une qui gère de multiples queues en parallèle… mais Google ne veut en aucun cas acheter des machines qui sortent de l'ordinaire et doit donc résoudre ce problème avec du matériel standard et donc avec une NIC mono-queue. Quand on ne peut ou veut pas changer le matériel, alors la seule solution c'est d'améliorer le logiciel. L'équipe Google de Tom Herbert s'est donc attelée à la tâche et a produit le patch Receive Packet Steering. Quand un paquet arrive, le nouveau code s'occupe de traiter aussi vite que possible l'en-tête (le header) pour pouvoir connaître l'adresse IP et le port utilisés. Une fois que c'est fait, on fabrique une empreinte de cet en-tête (un hash) afin de pouvoir l'affecter à un processeur particulier. La liste des processeurs utilisés peut se configurer en écrivant dans /sys/class/net/eth0/rps_cpus (l'exemple est pour une carte eth0 bien entendu). La solution du Receive Packet Steering est donc conceptuellement assez simple, puisque le hash permet de s'assurer que les divers paquets d'un même flux seront routés vers le même processeur. En fait, la fonction Receive Packet Steering émule un NIC multi-queues et distribue le travail sur les architectures multi-cœurs. Le code de Google est quand même un peu plus subtil que ça, puisqu'il peut souvent se passer de calculer lui-même le hash. C'est une opération coûteuse, car on ne peut pas garder le calcul dans le cache du CPU. Chaque paquet entrant est différent et entraîne donc des « défauts de cache » (cache miss) qui sont très préjudiciables pour les performances. De nombreuses cartes réseau récentes calculent toutes seules le hash des paquets et le patch RPS utilise ce travail pour router gratuitement les paquets, sans avoir à calculer lui-même cette empreinte (le champ rxhash a été ajouté à la structure de la pile réseau Linux). Côté performances, les résultats sont très impressionnants. Tom Herbert a procédé à divers tests et ses benchmarks donnent les chiffres suivants (pour le test netperf TCP_RR) : Carte de type e1000 sur machine 8 cœurs Intel :- Sans patch : 90 000 transactions/s avec 34 % d'utilisation des CPU ;
- Avec patch RPS : 292 000 transactions/s avec 66 % d'utilisation des CPU.
- Sans patch : 117 000 transactions/s avec 10 % d'utilisation des CPU ;
- Avec patch RPS : 327 000 transactions/s avec 29 % d'utilisation des CPU.
- Sans patch : 104 000 transactions/s avec 30 % d'utilisation des CPU ;
- Avec patch RPS : 290 000 transactions/s avec 63 % d'utilisation des CPU ;
- Avec patch RPS+RFS : 303 000 transactions/s avec 61 % d'utilisation des CPU.
- Sans patch : 103 000 transactions/s avec 48 % d'utilisation des CPU (latence max 3 185 µs) ;
- Avec patch RPS : 174 000 transactions/s avec 73 % d'utilisation des CPU (latence max 2 468 µs) ;
- Avec patch RPS+RFS : 223 000 transactions/s avec 73 % d'utilisation des CPU (latence max 1 382 µs).
Qualité de service avec pm_qos
L'infrastructure pm_qos (Power management – Quality of service) a été modifiée dans le nouveau noyau 2.6.35. Cette infrastructure est utilisée pour spécifier au noyau Linux quelles sont les latences à respecter quand il essaye d'économiser de l'énergie. En effet, un noyau trop agressif dans ses actions en vue d'économiser l'énergie peut générer des latences désagréables. Avec pm_qos on peut indiquer au noyau d'économiser au maximum les watts, mais tout en respectant les exigences de latence ou de débit d'une ou plusieurs applications particulières. Par exemple, on peut demander au noyau de faire son travail d'économie tout en respectant une latence maximum de 50 millisecondes pour l'application mplayer. Il y a trois paramètres sur lesquels on peut jouer :- Latence du processeur (en µs) : PM_QOS_CPU_DMA_LATENCY ;
- Temps de réponse réseau (en µs) : PM_QOS_NETWORK_LATENCY ;
- Débit réseau (en Ko/sec) : PM_QOS_NETWORK_THROUGHPUT.
Gestion des interruptions
Le noyau 2.6.35 a désactivé la fonction permettant la création d'interruptions « lentes » et il fonctionne maintenant uniquement avec des interruption « rapides ». Pour comprendre de quoi il s'agit, il faut savoir que les divers périphériques peuvent interrompre le processeur dans son travail à tout moment. Ces interruptions s'effectuent quand le matériel a besoin d'une action urgente de la part du système. Cela peut-être dans le cas d'une entrée/sortie, de l'avancement d'une horloge, d'un défaut matériel, etc. Le mécanisme des interruptions est astucieux, car il permet au processeur de faire son travail normal d'exécution d'un programme sans s'occuper du reste. Si un évènement requiert son attention, alors il sera prévenu par une interruption. Cela lui évite de devoir vérifier en permanence l'état des périphériques (s'il faisait ça, ce serait du polling, et c'est un comportement bloquant et consommateur de ressources). Quand l'interruption est émise, alors le programme en cours d'exécution est suspendu et la main passe au gestionnaire des interruption (interrupt handler). Ce gestionnaire s'occupe de la tâche qui a été demandée par le périphérique et, une fois le travail terminé, il redonne le main au programme qui était suspendu. Tout ça c'est la théorie mais, comme souvent, le monde réel se révèle plus compliqué. Parfois même beaucoup plus compliqué ! En réalité, il n'y a pas qu'un seul type d'interruptions mais deux. Tout d'abord, il y a les interruptions « rapides » qui ne peuvent pas être elles-mêmes interrompues par une autre interruption. Le second type d'interruption, les « lentes », a une notion de priorité et elles peuvent donc être interrompues par une interruption de plus haute priorité.- Interruption « rapide » :
- Ininterruptible
- Interruption « lente » :
- Peut être interrompue
En bref (↑)
- default :
- On laisse la carte graphique tourner à sa fréquence par défaut sans rien toucher.
- low :
- Le GPU tourne à la vitesse minimum (mode sur batteries par exemple).
- high :
- Le GPU tourne à la vitesse maximum (mode sur secteur par exemple).
- auto :
- Changement automatique entre les modes low et high en fonction du mode d'alimentation.
Documentation technique et maintenance du code (↑)
Afin de désamorcer le micro-troll de la dernière brève ci-dessus, rendons un hommage aux développeurs d'OpenBSD. On sait que ces derniers refusent de signer des accords de non-divulgation et qu'ils luttent avec acharnement pour obtenir les spécifications complètes des périphériques. Voir par exemple le prix de la FSF obtenu en 2004 par Theo de Raadt pour « ses efforts dans l'obtention de pilotes et documentations libres des cartes de réseau sans fils ». Une fois de plus, l'histoire vient de donner raison à ceux qui mènent ce combat opiniâtre. Un pilote libre ne suffit pas toujours et la disponibilité de la documentation technique est cruciale dans bien des cas. Intel a en effet annoncé que les pilotes Linux des cartes Wi-Fi d'ancienne génération 2100/2200BG/2915ABG (présentes dans les portables Pentium M et Core Duo) passaient en mode « orphelin ». Autrement dit, plus aucun développeur Intel ne travaillera sur ce code libre et le seul message de commit est « Merci de nous faire savoir si quelqu'un est intéressé par la maintenance de ces pilotes ». Ce laconisme a provoqué une vive réaction de la part de Dave Miller, responsable du sous-système réseau de Linux : « Je suis extrêmement déçu de constater que la seule organisation capable de corriger les bugs de bas niveau dans ces pilotes n'est plus disposée à le faire. Si de la documentation ne peut être fournie afin que d'autres puissent maintenir ce pilote (et pas seulement pour quelques personnes en particulier, parce qu'un jour, ces gens-là pourrait eux-aussi ne plus le maintenir) alors ce serait vraiment criminel ». La réponse de la développeuse Intel, Reinette Chatre, n'a pas été encourageante sur la mise à disposition de la documentation technique : « Récemment nous avons perdu toute expertise sur ces pilotes et nous ne sommes plus capables de les maintenir de façon correcte. C'est pour ça que nous avons changé le statut en "Orphaned" parce que ça reflète vraiment la situation à l'heure actuelle. Nous ne savons vraiment pas quoi faire d'autre. Nous sommes incapables de fournir cette documentation, mais nous examinons nos options en ce moment. Avec le démantèlement des équipes cela va prendre un peu de temps ». À l'évidence, Dave Miller a été exaspéré par cette réponse et par le comportement d'Intel dans cette affaire. La firme californienne avait jusqu'à présent joué le jeu du libre en proposant un pilote intégré au noyau Linux et en assurant sa maintenance, mais le tableau s'est assombri avec cette annonce (voir le message sur le site du pilote : « This project is considered stable and Intel is no longer maintaining it »). Bien entendu, il ne saurait être question de dire qu'Intel a une obligation de maintenir un pilote ad vitam æternam. Les développeurs Linux sont prêts à comprendre que le support de vieilles cartes Wi-Fi qui ne sont plus commercialisées depuis longtemps est une activité qui n'intéresse pas cette entreprise. La communauté peut parfaitement prendre le relais… mais dans ce cas, il faut fournir la documentation détaillée sur le matériel au moment du démantélement des équipes ! Le pilote libre est certes un grand atout pour comprendre comment marche la puce mais, si un bug de bas niveau se manifeste, il faut souvent avoir la documentation pour pouvoir le corriger. Si Intel refuse ou est incapable de fournir cette documentation alors, même si le risque est très faible dans le cas d'un pilote ancien, la communauté sera à la merci de l'apparition d'un bug vicieux. C'est le cœur de la réponse de Dave : « Et après on se demande pourquoi nous poussons aussi durement les vendeurs pour qu'ils fournissent la documentation technique de leurs puces, et ça même quand ces vendeurs sont amicaux envers nous et ont une équipe de développeurs qui maintient le code, au moins au début. C'est exactement parce que des trucs comme ça peuvent arriver et arrivent vraiment. Et avec la pléthore de périphériques et de pilotes présents dans Linux, on peut s'attendre à ce que ce genre de chose devienne de plus en plus fréquent. Sans cette documentation nous sommes démunis et à la merci de votre décision ». La position des développeurs d'OpenBSD, qui est aussi celle de Dave Miller et de nombreux autres développeurs Linux, est qu'il faut exiger la documentation technique détaillée des périphériques auprès des fabricants. Ce serait dans l'intérêt de tout le monde puisque, dans le cas d'espèce, Intel ne perdrait rien en diffusant la doc d'une vieille puce Wi-Fi d'ancienne génération. Comme le dit Theo de Raadt dans cet entretien en s'adressant aux industriels: « Le fait de nous donner la documentation nous permet de maintenir vos périphériques et comme ça encore plus de consommateurs sauront que vos périphériques sont bien pris en charge ».Le bilan en chiffres (↑)
Côté statistiques, l'article récapitulatif pour le 2.6.35 du site LWN est disponible et on pourra également se reporter au site dédié aux statistiques du noyau Linux. Dans son mail d'annonce de sortie du noyau Linus indique que sa politique de sévérité s'est traduite par des statistiques inhabituelles. Alors qu'en moyenne il accepte entre 2700 et 3200 commits après la première version candidate, cette fois-ci ce sont moins de 2000 commits qui sont entrés dans sa branche Git après la RC-1. Il faut remonter au noyau 2.6.24 pour avoir un cycle de RC aussi calme. En revanche pour les ajouts dans la période de merge il semble que le noyau a atteint une sorte d'équilibre aux alentours de 10 000 patchs par version (tous les trois mois donc). Si on regarde les chiffres du site remword (au premier août) on obtient cela pour les cinq derniers noyaux :- 2.6.31 : 10 881 patches (1 164 développeurs) ;
- 2.6.32 : 10 997 patches (1 244 développeurs) ;
- 2.6.33 : 10 863 patches (1 199 développeurs) ;
- 2.6.34 : 9 443 patches (1 171 développeurs) ;
- 2.6.35 : 9 771 patches (1 188 développeurs).
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.Suspend blockers
Après la polémique suite au retrait des pilotes Android du noyau 2.6.33, les discussions n'ont pas cessé sur la LKML. Tous les aspects du problème ont été disséqués et les développeurs recherchent une solution alternative à la technique wakelock de Google car cette dernière est considérée comme un vilain hack ne s'intégrant pas bien au noyau. Sachant que le code wakelock (rebaptisé « suspend blockers ») n'entrera jamais tel quel dans Linux, il faut trouver un remplaçant… mais en ce moment c'est la confusion qui domine ! Entre la proposition d'Alan Stern et celle de James Bottomley, entre l'avis détaillé d'Ingo Molnar et les critiques de Linus Torvalds, entre la nouvelle tentative d'inclusion du développeur Google Arve Hjonnevag et les dernières propositions de Rafael Wysocki, on ne sait plus trop où donner de la tête. Bien entendu, cette incertitude est provisoire et un vainqueur va finir par émerger qui sera adoubé par Linus. Le mode de développement de notre noyau préféré a toujours été très darwinien (même si, dans ce cas, il y a vraiment un dessein intelligent) et des polémiques actuelles sur la liste de diffusion sortira certainement un code de meilleure qualité qui sera incorporé aux futures versions de Linux.Aller plus loin
- Les nouveautés du noyau 2.6.35 (171 clics)
- Le bilan des changements partie 1 (16 clics)
- Le bilan des changements partie 2 (9 clics)
- Le bilan des changements partie 3 (7 clics)
- Les prévisions pour l'avenir de Linux (21 clics)
# Ca, c'est fait !
Posté par Infernal Quack (site web personnel) . Évalué à 8.
L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire
[^] # Re: Ca, c'est fait !
Posté par dyno partouzeur de drouate . Évalué à -4.
[^] # Re: Ca, c'est fait !
Posté par j_kerviel . Évalué à 10.
J'avais prévu d'être productif aujourd'hui au travail.
Pas merci donc !
[^] # Re: Ca, c'est fait !
Posté par windu.2b . Évalué à 10.
Ça devrait lui être interdit de publier pendant la période estivale...
[^] # Re: Ca, c'est fait !
Posté par Zakath (site web personnel) . Évalué à 10.
[^] # Re: Ca, c'est fait !
Posté par Goffi (site web personnel, Mastodon) . Évalué à 7.
Par curiosité, combien de temps ça te prend à chaque fois d'écrire une dépêche pareille ?
[^] # Re: Ca, c'est fait !
Posté par Boa Treize (site web personnel) . Évalué à 4.
Ça m'a pris environ 1h30 de relecture / correction / mise en forme (alors qu'à la base c'était déjà de très bonne qualité) ; les autres relecteurs ont passé pas mal de temps dessus aussi, mais je sais pas combien.
[^] # Re: Ca, c'est fait !
Posté par patrick_g (site web personnel) . Évalué à 10.
Non je ne fais pas de total mais ça se compte facilement en dizaines d'heures.
C'est dur de tenir le rythme des devs Linux avec une release tous les 3 mois.
[^] # Re: Ca, c'est fait !
Posté par Olivier (site web personnel) . Évalué à 2.
# Damien Miller :)
Posté par Brice Goglin . Évalué à 6.
[^] # Re: Damien Miller :)
Posté par patrick_g (site web personnel) . Évalué à 7.
[^] # Re: Damien Miller :)
Posté par Vivien MOREAU . Évalué à 7.
Dis donc, patrick_g, tu ne ferais pas une fixation sur OpenBSD ? ;-)
[^] # Re: Damien Miller :)
Posté par patrick_g (site web personnel) . Évalué à 3.
[^] # Re: Damien Miller :)
Posté par adonai . Évalué à 2.
[^] # Re: Damien Miller :)
Posté par patrick_g (site web personnel) . Évalué à 2.
C'est tiré de là : http://undeadly.org/cgi?action=article&sid=2010072509351(...)
# Des nouvelles de nouveau ?
Posté par houra . Évalué à 10.
Sedullus dux et princeps Lemovicum occiditur
# Polling
Posté par Artefact2 (site web personnel) . Évalué à 4.
Tu as parlé de polling à un moment, mais dans certains cas il s'avère que c'est plus performant et plus robuste (une carte réseau qui fait du polling sera plus résistante aux DoS par exemple), comme l'indique http://www.cyberciti.biz/faq/freebsd-device-polling-network-(...)
Le noyau FreeBSD propose d'utiliser le polling pour les drivers de cartes réseau qui le supportent, existe-t-il une fonction similaire dans le noyau Linux ?
[^] # Re: Polling
Posté par neologix . Évalué à 10.
http://www.linuxfoundation.org/collaborate/workgroups/networ(...)
Ce n'est pas seulement utile en cas de DOS, il suffit d'avoir quelques cartes 1Gb/s et pas mal de trafic, cela fait déjà un certain nombre d'interruptions.
D'ailleurs, ce principe d'"interrupt mitigation" va peut-être faire son apparition pour les disques, avec l'apparition des SSD :
http://lwn.net/Articles/346219/
[^] # Re: Polling
Posté par Ph Husson (site web personnel) . Évalué à 4.
[^] # Re: Polling
Posté par vjm . Évalué à 7.
Sur ce sujet, il y a eu un bon thread quoi que qu'un peu trollesque (avec notamment des interventions de Luigi Rizzo qui a fait l'implémentation originale) sur freebsd-net : http://lists.freebsd.org/pipermail/freebsd-net/2009-April/02(...)
# Pour ne pas relancer troll ubuntu ...
Posté par Gof (site web personnel) . Évalué à -3.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par j_kerviel . Évalué à 9.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par tesiruna . Évalué à 0.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par mansuetus (site web personnel) . Évalué à 6.
http://fr.wiktionary.org/wiki/camembert
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par zebra3 . Évalué à 8.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par GeneralZod . Évalué à 3.
http://thread.gmane.org/gmane.linux.kernel/1015999
Donc, ils vont peut-être enfin pouvoir dépasser Mandriva !!!!! (les esprits chagrins y trouveront bien à redire mais les fanboys vont exulter !)
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par Albert_ . Évalué à -2.
Au passage il me semble que pas mal de monde avait parie sur l'abandon de AppArmor par Ubuntu apres que Novell est licencie les devs, les cassandre se seraient ils trompes? Comme on dit qui vivra verra.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par GeneralZod . Évalué à 3.
On dit fedoristas ...
> tu trouves que apparmor est une honte par rapport a SElinux
faut arrêter de fumer la moquette, ai-je dit ou bien sous-entendu quelque chose à ce sujet ?
> on ne se pose meme pas la question de savoir si tu fais parti des esprits chagrins.
Une chose est certaine, tu es un pisse-froid.
C'est quand même surprenant que je me fasse moinsser alors que je présentais une contribution *significative* de Canonical en upstream (enfin, ça y est presque)... Novell avait essayé à plusieurs reprises de pousser AppArmor dans la branche linus et s'était à chaque fois cassé les dents.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par zebra3 . Évalué à 1.
C'est vrai, c'est pour rimer avec « tourista » :-)
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par patrick_g (site web personnel) . Évalué à 5.
Ce serait un excellent sujet je pense.
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par Albert_ . Évalué à 0.
Je n'ai ni le temps ni l'envie d'aller chercher dans les archives mais oui tu as mis plusieurs des liens sur ce sujet. Tu remarqueras que je ne dis rien sur le bien fonde ou pas de cela je n'y connais rien mais nier que ton implication dans Fedora ne te pousse pas a dejuger apparmor me semble etre un petit peu de mauvaise foi.
Une chose est certaine, tu es un pisse-froid.
Et si on arretait les insultes. Est-ce que tu fais partis de cette categorie de personne que tu as decrits toi meme ou pas? Dis le de facon tout a fait honnete perso j'en ai rien a faire.
'est quand même surprenant que je me fasse moinsser alors que je présentais une contribution *significative* de Canonical en upstream (enfin, ça y est presque)...
Oui ben ca il y a un certains nombres de personnes qui ont des problemes avec la definition du mot pertinent et je te rassure tout de suite ce n'est pas moi qui t'es "moinsser".
Et je suis a 100% derriere la demande de patrick_g, j'aimerai bien avoir des infos de personnes competentes et non biaise sur le sujet et j'ai l'impression que ca c'est pas facile a trouver :)
[^] # Re: Pour ne pas relancer troll ubuntu ...
Posté par GeneralZod . Évalué à 3.
Parce que tout les contributeurs dans Fedora apprécient SELinux ? c'est pas gagné, si tu visites la m-l fedora-devel, tu verras que récemment, on a du demandé aux testeurs de ne *pas* désactiver SELinux pour les tests.
Certes, j'utilise SELinux depuis plusieurs années, ça marche très bien et j'en suis très content mais ça s'arrête là. Comme je ne suis pas expert en sécurité, j'ai probablement posté des liens par le passé, mais au lecteur d'exercer son jugement. Pour ce que j'en sais, SELinux et App Armor fonctionnent sur le même principe, sauf que SELinux utiliseles attributs du système de fichiers et App Armor les chemins (chacun a ses inconvénients et ses avantages), l'un est censé être plus pointu et l'autre plus simple d'administration.
Si tu veux savoir, je préfère avoir AppArmor que rien du tout. Je l'ai utilisé avec d'autres distros, ça marche tout aussi bien, certes y a moins d'outils, moins de possibilités mais bon, les personnes qui maitrisent l'écriture de politiques SELinux ou App Armor, ça courre pas les rues.
# Système de notifications
Posté par dest . Évalué à 4.
[^] # Re: Système de notifications
Posté par patrick_g (site web personnel) . Évalué à 7.
"The fanotify file notification interface did not go in, despite the lack of public opposition".
[^] # Re: Système de notifications
Posté par dest . Évalué à 3.
# btrfs dans ubuntu 10.10 ?
Posté par Olivier (site web personnel) . Évalué à 2.
(en même temps quand je pense que la carte micro-SD de mon téléphone androïd est toujours en fat32…)
[^] # Re: btrfs dans ubuntu 10.10 ?
Posté par GeneralZod . Évalué à 10.
James Scott Remnant de Canonical n'y croit pas trop non plus à Btrfs dans Ubuntu 10.10.
http://www.netsplit.com/2010/05/14/btrfs-by-default-in-maver(...)
C'était plus un objectif ambitieux qu'une vraie fonctionnalité prévue, ça permet de faire avancer les choses, d'identifier les problèmes etc ... Si c'est prêt, tant mieux, sinon, on retente pour la prochaine.
# sybarite...
Posté par palm123 (site web personnel) . Évalué à 5.
:-)
ウィズコロナ
[^] # Re: sybarite...
Posté par mgoeminne (site web personnel) . Évalué à 6.
Merci
[^] # Re: sybarite...
Posté par Kerro . Évalué à 4.
Mais personne ne va les comprendre...
[^] # Re: sybarite...
Posté par Zarmakuizz (site web personnel) . Évalué à 4.
Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/
[^] # Re: sybarite...
Posté par Pierre Jarillon (site web personnel) . Évalué à -5.
http://www.encyclopedie-enligne.com/p/pr/preterition.html
[^] # Re: sybarite...
Posté par patrick_g (site web personnel) . Évalué à 6.
[^] # Re: sybarite...
Posté par Cyrille Pontvieux (site web personnel, Mastodon) . Évalué à -2.
En plus, ce sont deux excellents candidats pour des contrepéteries.
En plus, ce sont deux excellents candidats pour des contrepéteries.
En plus, ce sont deux excellents candidats pour des contrepéteries.
En plus, ce sont deux excellents candidats pour des contrepéteries.
En plus, ce sont deux excellents candidats pour des contrepéteries.
[^] # Re: sybarite...
Posté par Philip Marlowe . Évalué à 0.
Torvalds, souvent anachorète, parfois sybarite.
[^] # Re: sybarite...
Posté par j_kerviel . Évalué à 1.
J'ai trouvé pour sybarite
Affolons les sybarites ?
[^] # dans le Canard aujourd'hui
Posté par palm123 (site web personnel) . Évalué à 2.
ウィズコロナ
# Compactage mémoire
Posté par j_kerviel . Évalué à 6.
Ok on a deux scanneurs, un qui part du début et qui liste les pages candidates à un déplacement et un qui part de la fin pour lister les zones libres. Et ça s'arrête quand ils se rencontrent (donc potentiellement pas loin du milieux).
Mais pourquoi ?
Pourquoi est ce que ça s'arrête à la rencontre et pourquoi est ce que ça part forcément des deux extrémités ?
Est ce que ça veut dire que le nombre de pages à la fin est négligeable ? Et qu'il est peu probable de trouver suffisamment d'espace libre au début ?
[^] # Re: Compactage mémoire
Posté par patrick_g (site web personnel) . Évalué à 3.
"il recherche toutes les pages libres susceptibles d'accueillir des données. Quand il en trouve, il y déplace les pages listées dans la migrapages.
Regarde les graphiques de l'article LWN et ça deviendra plus clair :
http://lwn.net/Articles/368869/
On voit bien qu'à la fin du run toutes les pages du début de la zone sont vides et toutes les pages de la fin de la zone sont pleines.
[^] # Re: Compactage mémoire
Posté par j_kerviel . Évalué à 3.
Cependant, comme il le dit lui même, Son exemple est très simple (voire simpliste) : Il ne prend pas en compte les pages non-déplaçables (même s'il dit que le kernel essaye d'isoler les pages déplaçables d'une part et les pages non-déplaçables de l'autre).
Prenons quand même deux exemples simples (voire simplistes).
Soit une portion de mémoire définie par des bornes [ et ], des pages non-déplaçables U, des pages déplaçables M et des pages libres -. Dans cette portion de mémoire, on tente d'allouer 4 pages contigües.
Premier exemple :
[-M-U--M-]
L'algorithme commence à chercher les pages déplaçables depuis la droite et des places libres depuis la gauche. Le premier M (en seconde position) ira donc à la place du premier - (en dernière position). L'algorithme s’arrêtera sur le U qui est grosso-modo le milieu.[---U--MM]
Et là c'est le drame.Deuxième exemple :
[M-M---M-MM]
Pareil, l'algo va chercher les places libres à partir de la gauche et s'arrêter au milieu. Comme il n'y a qu'une place dans la moitié gauche, seul un M est déplaçable, alors qu'il est possible de trouver 4 pages contigües.[--M---MMMM]
Voilà ce qui me vient à l'esprit quand on me dit que l'algo s'arrête à la moitié.
Donc, ai-je loupé une subtilité ? Est ce que dans la pratique, ce genre de configuration est très hautement improbable ? Est ce que ce sont des worst case qu'on néglige ?
[^] # Re: Compactage mémoire
Posté par patrick_g (site web personnel) . Évalué à 3.
C'était aussi le premier hyperlien du paragraphe sur le patch de compactage mémoire ;-)
>>> Donc, ai-je loupé une subtilité ?
Non je ne pense pas. Il faut voir que les pages non déplaçables sont relativement rares donc ton premier exemple se produira rarement.
Concernant le second je ne vois pas de faille et donc je te réponds que je ne sais pas :)
A mon avis on est dans le cas indiqué par Mel Gorman ou un algo plus sophistiqué (qui traiterait ce genre de cas) ne vaudrait pas le coup:
"This method is a bit primitive but is easy to understand and greater sophistication would require maintenance of counters on a per-pageblock basis. This would have a big impact on allocator fast-paths to improve compaction which is a poor trade-off".
Je t'invite à lire tout son mail de commit qui est très détaillé (avec des benchs plus complets que ce que j'ai indiqué) : http://article.gmane.org/gmane.linux.kernel.mm/47298
[^] # Re: Compactage mémoire
Posté par ecyrbe . Évalué à 3.
Le premier scanner avance à chaque fois qu'il trouve une page occupé déplaçable, le second avance à chaque fois qu'il trouve une page libre...
En gros il doivent se rencontrer quand il y a autant de pages libre que de pages occupées trouvées...
[^] # Re: Compactage mémoire
Posté par Maxime G (site web personnel) . Évalué à 3.
L'algo est amené à être lancer régulièrement. Il est pas parfait d'un coup tout le temps, mais le coup suivant règle en général le problème. Ou encore un coup de plus. Et du coup (je vais finir par prendre des coups) c'est ça qui est pas mal, l'algo reste simple et efficace, pour un truc, où à tous les coups, on aurait pu faire beaucoup plus compliqué.
# Youpi
Posté par Olivier Esver (site web personnel) . Évalué à 8.
Ça c'est une bonne nouvelle !
Par contre mauvais point pour les cartes Wi-Fi Intel, j'en utilise toujours une dans mon portable...
S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
[^] # Re: Youpi
Posté par SebastienV . Évalué à 3.
Le BIOS a aussi décidé d'ennuyer les libristes :p
[^] # Re: Youpi
Posté par Olivier Esver (site web personnel) . Évalué à 6.
Mais c'est très très périlleux comme opération.
S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
[^] # Re: Youpi
Posté par KiKouN . Évalué à 5.
Toutefois, si intel avait donné la documentation des cartes dès le début, cette documentation se serait éparpiller sur le Web et serait aujourd'hui facilement trouvable. Même si cela n'est pas garanti.
C'est un raison de plus de partager les spécifications du matériel.
[^] # Re: Youpi
Posté par Grunt . Évalué à 7.
Prochaine étape: décoder du Theora ou du WebM en hard sur un système libre, rdv en 2040..
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
# Erreur traduction
Posté par JLuc315 . Évalué à 2.
Merci pour le très bon article comme toujours
[^] # Re: Erreur traduction
Posté par med . Évalué à 1.
Merci patrick_g pour cet excellent article.
[^] # Re: Erreur traduction
Posté par patrick_g (site web personnel) . Évalué à 2.
[^] # Re: Erreur traduction
Posté par Sylvain Sauvage . Évalué à 1.
[^] # Re: Erreur traduction
Posté par Ph Husson (site web personnel) . Évalué à 3.
[^] # Re: Erreur traduction
Posté par KiKouN . Évalué à 7.
Ha oui, j'aime bien ça.
Sinon, on peut faire marseillais avec "2-3 minutes"
[^] # Re: Erreur traduction
Posté par Dring . Évalué à 2.
[^] # Re: Erreur traduction
Posté par windu.2b . Évalué à 4.
[^] # Re: Erreur traduction
Posté par zebra3 . Évalué à 3.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Erreur traduction
Posté par zebra3 . Évalué à 2.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
# Merci :)
Posté par casselinux . Évalué à -5.
# RPS
Posté par Matthieu . Évalué à 2.
J'ai plutôt l'impression que le patch est une avancée pour les serveurs qui traitent "très beaucoup" de paquets réseaux, donc plutôt des firewalls que des serveurs genre tomcat qui passent plus de temps à faire tourner l'applicatif que de traiter la réception des paquets réseaux.
Me trompais-je ?
[^] # Re: RPS
Posté par Maxime G (site web personnel) . Évalué à 1.
[^] # Re: RPS
Posté par Greg (site web personnel) . Évalué à 2.
[^] # Re: RPS
Posté par Robert Palmer (site web personnel) . Évalué à 1.
Pensez à l'environnement avant d'imprimer ce commentaire - Please consider the environment before printing this comment
[^] # Re: RPS
Posté par reno . Évalué à 3.
[^] # Re: RPS
Posté par errno . Évalué à 9.
[^] # Re: RPS
Posté par Krunch (site web personnel) . Évalué à 3.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: RPS
Posté par Greg (site web personnel) . Évalué à 2.
Mais pas de rx ni de tx.
Ca veut dire que dans le 1er cas, c'est une mono-queue, dans le second, une vrai multi-queue, et si j'avais des tx rx ce serait des multi-queue émulé par RPS RFS ?
[^] # Re: RPS
Posté par Krunch (site web personnel) . Évalué à 4.
Dans ce cas, les interruptions peuvent être gérées par n'importe quel coeur mais elles auront tendance à rester sur l'un d'eux. Si tu regardes le compteur d'interruptions (toujours dans /proc/interrupts) tu devrais voir assez rapidement si elles sont vraiment réparties équitablement (ce qui indiquerait du multiqueue) ou non.
D'après ce que j'ai compris, la plupart des cartes 10G gèrent le multiqueue de nos jours (après faut aussi que le driver le supporte). Ça ne serait pas le cas pour les cartes 1G (sauf le vraiment haut de gamme).
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: RPS
Posté par Krunch (site web personnel) . Évalué à 3.
Sinon un moyen de voir si le driver est prévu pour faire du multiqueue est de chercher les appels à alloc_etherdev_mq(), alloc_netdev_mq() ou alloc_etherdev() dans le code du driver.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: RPS
Posté par neologix . Évalué à 1.
# interruptions
Posté par Guillaume Knispel . Évalué à 2.
Selon les cas, on peut aussi employer une tasklet (mécanisme qui existe depuis très très longtemps et permet donc d'avoir un code plus facilement portable sur les vieux noyaux (il y a des gens qui utilisent des vieux noyaux, parfois pour des raisons foireuses mais c'est une autre histoire)).
[^] # Re: interruptions
Posté par François Trahay (site web personnel) . Évalué à 1.
(enfin je dis ca, mais je ne connais pas bien la programmation noyau)
[^] # Re: interruptions
Posté par Guillaume Knispel . Évalué à 2.
Une tasklet est plus proche d'une ISR niveau comportement, donc si tu maj du code sans étude préalable à mon avis il est plus prudent d'utiliser une tasklet.
[^] # Re: interruptions
Posté par SebastienV . Évalué à 2.
Quelle est la différence entre les deux, un threaded interrupt et une workqueue ?
[^] # Re: interruptions
Posté par Guillaume Knispel . Évalué à 2.
[^] # Re: interruptions
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
La différence est surtout la latence j'imagine.
"La première sécurité est la liberté"
[^] # Re: interruptions
Posté par Guillaume Knispel . Évalué à 2.
[^] # Re: interruptions
Posté par SebastienV . Évalué à 1.
Entre une Workqueue dédiée et un threaded interrupt, je ne vois qu'une différence conceptuelle, mais je ne vois pas vraiment en quoi un mécanisme serait plus performant que l'autre...
# clarté trouble
Posté par Prae . Évalué à 7.
> On a gagné en clarté sur l'utilité de la fonction (on comprend que c'est lié à stop_machine)
:-)
Pour plus de clarté, cela aurait mieux de l'appeler stop_cpu non ?
(ou pire renommer stop_machine en machine_stop)
# Un journaliste qui a tout compris à Linux
Posté par tetaclac . Évalué à 1.
http://www.lemondeinformatique.fr/actualites/lire-le-dernier(...)
[^] # Re: Un journaliste qui a tout compris à Linux
Posté par Albert_ . Évalué à 1.
Dire autant de betises en 5 lignes c'est plus fort que moi!
[^] # Re: Un journaliste qui a tout compris à Linux
Posté par Yakulu . Évalué à 2.
# Firewall
Posté par barmic . Évalué à 3.
Je crois me souvenir qu'il y a pas mal de temps on avait vu un journal qui en parlait pour améliorer les performance lors de l'ajout/suppression de règle et pour permettre d'avoir une interface en ligne de commande comparable à packetfilter.
Après recherche je viens de retrouver le nom de cela c'est NFtable (qui remplacerais iptables) :
https://linuxfr.org//~switcher/28040.html
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Firewall
Posté par Victor STINNER (site web personnel) . Évalué à 3.
https://git.netfilter.org/cgi-bin/gitweb.cgi?p=nftables.git;(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.