GNU/Linux >> Tutoriels Linux >  >> Linux

Le noyau Linux :Top 5 des innovations

Le mot innovation se fait entendre dans l'industrie de la technologie presque autant que la révolution , il peut donc être difficile de différencier l'hyperbole de quelque chose de vraiment excitant. Le noyau Linux a été qualifié d'innovant, mais encore une fois, il a également été qualifié de plus grand hack de l'informatique moderne, un monolithe dans un micro-monde.

Mis à part le marketing et la modélisation, Linux est sans doute le noyau le plus populaire du monde open source, et il a introduit de véritables changements de jeu au cours de sa durée de vie de près de 30 ans.

Cgroups (2.6.24)

En 2007, Paul Menage et Rohit Seth ont obtenu les groupes de contrôle ésotériques (cgroups) fonctionnalité ajoutée au noyau (l'implémentation actuelle de cgroups est une réécriture par Tejun Heo.) Cette nouvelle technologie était initialement utilisée comme un moyen d'assurer, essentiellement, la qualité de service pour un ensemble spécifique de tâches.

Par exemple, vous pouvez créer une définition de groupe de contrôle (cgroup) pour toutes les tâches associées à votre serveur Web, un autre cgroup pour les sauvegardes de routine et encore un autre pour les exigences générales du système d'exploitation. Vous pouvez ensuite contrôler un pourcentage de ressources pour chaque groupe de contrôle, de sorte que votre système d'exploitation et votre serveur Web obtiennent l'essentiel des ressources système tandis que vos processus de sauvegarde ont accès à tout ce qui reste.

Ce pour quoi cgroups est devenu le plus célèbre, cependant, c'est son rôle en tant que technologie qui pilote le cloud aujourd'hui :les conteneurs. En fait, les cgroups étaient à l'origine nommés conteneurs de processus. Ce n'était pas une grande surprise quand ils ont été adoptés par des projets comme LXC, CoreOS et Docker.

Les vannes étant ouvertes, le terme conteneurs est devenu à juste titre synonyme de Linux, et le concept d'"applications" basées sur le cloud de type microservice est rapidement devenu la norme. Ces jours-ci, il est difficile de s'éloigner des cgroups, ils sont si répandus. Chaque infrastructure à grande échelle (et probablement votre ordinateur portable, si vous utilisez Linux) tire parti des cgroups de manière significative, rendant votre expérience informatique plus gérable et plus flexible que jamais.

Par exemple, vous avez peut-être déjà installé Flathub ou Flatpak sur votre ordinateur, ou vous avez peut-être commencé à utiliser Kubernetes et/ou OpenShift au travail. Quoi qu'il en soit, si le terme "conteneurs" est encore flou pour vous, vous pouvez acquérir une compréhension pratique des conteneurs dans les coulisses avec les conteneurs Linux.

LKMM (4.17)

En 2018, le travail acharné de Jade Alglave, Alan Stern, Andrea Parri, Luc Maranget, Paul McKenney et plusieurs autres a été fusionné dans le noyau Linux principal pour fournir des modèles de mémoire formels. Le sous-système Linux Kernel Memory [Consistency] Model (LKMM) est un ensemble d'outils décrivant le modèle de cohérence de la mémoire Linux, ainsi que la production de tests décisifs (klitmus , spécifiquement) pour les tests.

À mesure que les systèmes deviennent plus complexes dans la conception physique (plus de cœurs de processeur sont ajoutés, le cache et la RAM augmentent, etc.), plus il leur est difficile de savoir quel espace d'adressage est requis par quel processeur, et quand. Par exemple, si CPU0 doit écrire des données dans une variable partagée en mémoire et que CPU1 doit lire cette valeur, alors CPU0 doit écrire avant que CPU1 ne tente de lire. De même, si les valeurs sont écrites dans un ordre dans la mémoire, on s'attend à ce qu'elles soient également lues dans le même ordre, quel que soit le processeur ou les processeurs qui effectuent la lecture.

Même sur un seul processeur, la gestion de la mémoire nécessite un ordre de tâche spécifique. Une action simple telle que x =y nécessite un processeur pour charger la valeur de y de la mémoire, puis stockez cette valeur dans x . Placer la valeur stockée dans y dans le x la variable ne peut pas apparaître avant la CPU a lu la valeur de la mémoire. Il existe également des dépendances d'adresse :x[n] =6 nécessite que n est chargé avant que le processeur ne puisse stocker la valeur de six.

LKMM aide à identifier et à tracer ces modèles de mémoire dans le code. Il le fait en partie avec un outil appelé troupeau , qui définit les contraintes imposées par un modèle de mémoire (sous la forme d'axiomes logiques), puis énumère tous les résultats possibles compatibles avec ces contraintes.

Patch à faible latence (2.6.38)

Il y a bien longtemps, dans les jours précédant 2011, si vous vouliez faire un travail multimédia "sérieux" sous Linux, vous deviez vous procurer un noyau à faible latence. Cela s'appliquait principalement à l'enregistrement audio tout en ajoutant de nombreux effets en temps réel (comme chanter dans un microphone et ajouter de la réverbération, et entendre votre voix dans votre casque sans retard notable). Il y avait des distributions, comme Ubuntu Studio, qui fournissaient de manière fiable un tel noyau, donc en pratique ce n'était pas vraiment un obstacle, juste une mise en garde importante lors du choix de votre distribution en tant qu'artiste.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Cependant, si vous n'utilisiez pas Ubuntu Studio, ou si vous aviez besoin de mettre à jour votre noyau avant que votre distribution ne s'en occupe, vous deviez vous rendre sur la page Web rt-patches, télécharger les correctifs du noyau, les appliquer à votre noyau code source, compilez et installez manuellement.

Et puis, avec la sortie de la version 2.6.38 du noyau, ce processus était terminé. Le noyau Linux a soudainement, comme par magie, un code à faible latence (selon les benchmarks, la latence a été réduite d'un facteur 10, au moins) intégré par défaut. Plus de téléchargement de correctifs, plus de compilation. Tout a fonctionné, et tout cela grâce à un petit patch de 200 lignes implémenté par Mike Galbraith.

Pour les artistes multimédias open source du monde entier, cela a changé la donne. Les choses se sont tellement bien passées à partir de 2011 qu'en 2016, je me suis mis au défi de construire une station de travail audio numérique (DAW) sur un Raspberry Pi v1 (modèle B) et j'ai trouvé que cela fonctionnait étonnamment bien.

RCU (2.5)

RCU, ou Read-Copy-Update, est un système défini en informatique qui permet à plusieurs threads de processeur de lire à partir de la mémoire partagée. Pour ce faire, il diffère les mises à jour, mais également en les marquant comme mises à jour, pour s'assurer que les consommateurs de données lisent la dernière version. Concrètement, cela signifie que les lectures se produisent en même temps que les mises à jour.

Le cycle RCU typique ressemble un peu à ceci :

  1. Supprimez les pointeurs vers des données pour empêcher d'autres lecteurs de s'y référer.
  2. Attendez que les lecteurs aient terminé leurs processus critiques.
  3. Récupérer l'espace mémoire.

La division de l'étape de mise à jour en phases de suppression et de récupération signifie que le programme de mise à jour effectue la suppression immédiatement tout en différant la récupération jusqu'à ce que tous les lecteurs actifs soient terminés (soit en les bloquant, soit en enregistrant un rappel à invoquer à la fin).

Bien que le concept de lecture-copie-mise à jour n'ait pas été inventé pour le noyau Linux, son implémentation sous Linux est un exemple déterminant de la technologie.

Collaboration (0.01)

La réponse finale à la question de savoir ce que le noyau Linux a innové sera toujours, avant tout, la collaboration. Appelez-le bon timing, appelez-le supériorité technique, appelez-le piratage ou appelez-le simplement open source, mais le noyau Linux et les nombreux projets qu'il a permis sont un exemple éclatant de collaboration et de coopération.

Et cela va bien au-delà du noyau. Des personnes de tous horizons ont contribué à l'open source, sans doute parce que du noyau Linux. Linux était, et reste à ce jour, une force majeure du logiciel libre, inspirant les utilisateurs à apporter leur code, leur art, leurs idées, ou simplement eux-mêmes, à une communauté humaine mondiale, productive et diversifiée.

Quelle est votre innovation préférée ?

Cette liste est orientée vers mes propres intérêts :conteneurs, accès mémoire non uniforme (NUMA) et multimédia. J'ai sûrement laissé votre innovation de noyau préférée hors de la liste. Dites-le moi dans les commentaires !


Linux
  1. Analyser le noyau Linux avec ftrace

  2. Le noyau Linux :Top 5 des innovations

  3. Le cycle de vie des tests du noyau Linux

  4. Linux - Pourquoi le noyau ne peut-il pas exécuter Init ?

  5. Comment puis-je réserver un bloc de mémoire à partir du noyau Linux ?

Utilisation de la commande gratuite Linux

Comment vérifier la version du noyau sous Linux

Comment personnaliser la commande Linux top

Gestion du swap dans le système Linux moderne

La commande supérieure de Linux

Segmentation de la mémoire Linux