Historique: Le noyau Linux
Aperçu de cette version: 70
Table des matières
Informations
Site web officiel : http://kernel.org/
.Doc concernant la liste de développement du noyau : http://kernel.org/pub/linux/docs/lkml/
.Les arbres de développement du noyau (GIT) : http://git.kernel.org/
.Présentation
Le noyau, ou kernel en anglais, est la couche la plus basse du système Linux. Il prend en compte la gestion des périphériques à leurs plus bas niveaux en utilisant des pilotes génériques ou spécialisés pour amorcer et donc faire démarrer votre système.
Pour schématiser, le noyau va être le lien entre votre disque dur, votre clavier, votre écran, etc... C'est la première couche logicielle permanente qui va être lancée au démarrage de l'ordinateur.
Le noyau Linux est performant en terme de gestion multi-tâche. Pour que tout soit fluide, il découpe chaque opération en une multitude de processus légers. Un ordonnanceur se charge alors d'organiser ces tâches en fonction de la priorité qu'il leur est attribuée. Ainsi, vous pouvez utiliser un grand nombre d'applications simultanément, sans qu'elles perdent en fluidité de fonctionnement.
➡️ Pourquoi me parle-t-on de ça sur un site dédié à la MAO ?
Explications
En matière de MAO, les usages sont très diversifiés et certaines tâches demandent de prioriser les processus audio pour diminuer la latence de traitement. En effet, lorsque vous devez jouer d'un instrument et l'enregistrer en même temps que vous écoutez le son de la session en cours, vous trouverez du confort en abaissant la latence pour rendre le processus plus naturel. Par contre, l'édition de partitions, ou bien encore le "mixage" d'une session ne devrait pas vous poser de problème si la latence est importante.
Pour pouvoir obtenir un système compatible avec ce genre de besoin il faut passer par l'utilisation d'un noyau réglé avec des paramètres particuliers. Avant les versions de la série 5, on classait les noyaux Linux en 3 grands types :
- Standard : le noyau livré sur la plupart des distributions généralistes. Il servait au ordinateurs de bureaux, aux serveurs aussi parfois.
- Low Latency ("basse latence") : livré sur certaines distributions spécialisées MAO, il offre un certain nombre d'améliorations permettant de réduire de façon significative la latence tout en restant utilisable dans un cadre bureautique classique. C'est un noyau optimisé pour être plus performant qu'un noyau standard.
+ +
- Realtime-preemption : c'est une fonctionnalité qu'offre un patch du noyau écrit par Ingo Molnar. Ce patch rend le noyau complètement "préemptible", ce qui réduit la latence et permet de la définir de façon garantie. On appelle couramment un noyau ainsi patché un noyau temps réel (ou noyau RT, ou encore "RT-kernel", ou alors "realtime kernel") : il transforme votre système en un véritable système temps-réel.
- Real-Time ("temps réel") (RT): noyau modifié en profondeur (par un patch développé par les développeurs du patch RT) pour permettre un fonctionnement du type système temps réel. C'est celui qui vous permettra d'obtenir les meilleurs résultats en terme de latence, mais au prix d'une incompatibilité avec pas mal de patchs / modules du noyau et donc moins de support matériel. De plus, ce noyau peut poser des problèmes avec des applications boguées ou peu stables car il sera difficile de reprendre la main sur une application plantée qui dispose d'une priorité maximale !
Note : tordons ici le cou à la rumeur, il n'est pas nécessaire d'utiliser un Noyau Temps-Réel pour faire de la MAO. Si vous démarrez, commencez déjà par vous faire la main sur les noyaux fournis par votre distribution. D'autant plus que l'installation d'un noyau RT sur votre système demande de savoir précisément ce que l'on fait.
Maintenant que nous avons dégrossi le sujet, regardons ça de plus près.
Dans la configuration d'un noyau, on doit sélectionner un de ces choix :
Copy to clipboard
* ( ) No Forced Preemption (Server) * (X) Voluntary Kernel Preemption (Desktop) * ( ) Preemptible Kernel (Low-Latency Desktop)
Ce sont les 3 réglages de base du noyau standard aussi appelé Vanilla.
À ceci peut venir s'ajouter :
- le patch RT (la branche RT du kernel d'Ingo, voir son GIT)
- le BFS (pour Brain Fuck Scheduler : le fameux patch de 200 lignes qui n'accélèrent pas la machine, mais qui ré-ordonne intelligemment les thread/process de manière à obtenir un système plus fluide à l'utilisation.)
- les trucs offerts par rtlimits, RtKit qui permette de régler des trucs en simple utilisateur (ie : pas besoin d'être en super utilisateur)
Quelques différences et informations entre ces noyaux :
- le patch RT (et donc le noyau du même nom) propose d'autres types d'améliorations que la latence. Une des plus utile pour nous est la suivante : il offre la possibilité de contrôler la priorité des IRQ grâce à l'utilitaire rtirq. Cette fonctionnalité n'est pas offerte par le noyau preempt.
- le noyau preempt est un noyau avec quelques paramètres qui sont modifiés pour améliorer la performance en temps réel.
- 'Temps Réel : le terme plus exact serait peut être "Temps Déterminé". Un système permettant de soumettre des tâches à des notions de temps précises et choisies. Le temps nécessaire pour obtenir les résultats d' opérations effectuées par les tâches choisies, est déterminé d'avance, ce temps est donc prédictible et peut être garanti'.
- Le noyau RT vient "nu" : il s' agit du noyau standard avec un seul patch, le fameux patch RT.
Rappel : l'installation de tout nouveau noyau nécessitera la mise à jour de votre gestionnaire de démarrage (Grub ou Lilo), puis un redémarrage de l'ordinateur.
➡️ Comment savoir, alors, quel noyau est utilisé par mon système ?
Comment savoir
Vous pouvez regarder la description de votre noyau dans votre gestionnaire de paquet ou bien alors utiliser l'une des deux commandes suivantes dans un terminal :
- Copy to clipboard$uname -a Linux olinuxx-laptop 2.6.32-33-lowlatency #72 SMP PREEMPT Wed Aug 10 19:40:49 UTC 2011 i686 GNU/Linux
- Copy to clipboard$cat /proc/version Linux version 2.6.32-33-lowlatency (pbuilder@pbuilder) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #72 SMP PREEMPT Wed Aug 10 19:40:49 UTC 2011
Nous voyons bien ici la version du noyau avec la mention PREEMPT
Reconnaissance du matériel
Comment savoir si votre matériel son et reconnu par le noyau ? Cette commande peut vous y aider :
Copy to clipboard
lspci | grep [Aa]udio && lsusb| grep [Aa]udio && lsusb| grep Midi
Le noyau RT
Si les latences faibles vous intéresse, vous pouvez aller voir les pages dédiées : Le noyau Temps-Réel et Tuto Compiler un noyau Temps-Réel
Améliorations du noyau par rapport à chaque version
ALSA, qui est le cœur du "son" dans Linux, est intégré au noyau dans la majorité des distributions (2024).
Le noyau peut donc être amélioré à chaque nouvelle version pour ce qui concerne la prise en charge du matériel au travers des pilotes ALSA ou bien encore la manière de traiter le son au sein du système directement dans le code du noyau. La préemption en est un exemple lorsqu'on parle de noyau RT ou encore basse latence...
Il convient donc de vérifier quel matériel est nouvellement pris en charge par chaque version du noyau ainsi que d'éventuelles modifications qui pourrait modifier le comportement du système.
La page Améliorations audio par version de noyau se propose de lister ces modifications et permet d'en synthétiser les informations.
[+]