Forum : 1 - La documentation et les nouvelles de LinuxMAO

[chantier] wiki noyau RT

pianolivier utilisateur non connecté France
Coucou za tous

vu les nouveautés récentes du coté de l'équipe RT du noyau linux, je pense que c'est l'occasion de refaire le wiki le concernant sur linuxmao : Le noyau Temps-Réel

Ce que je crois comprendre :

Le "noyau RT" consiste en plusieurs améliorations diverses et variées de la structure interne du noyau, il ne s'agit pas d'une fonction unique "RT"
Les plus grosses améliorations sont aujourd'hui toutes intégrées au noyau "vanilla" (le noyau de base) mais non activées, il faut pour cela simplement utiliser l'option Preemption Model = Complete Preemption (Real-Time) (CONFIG_PREEMPT_RT) (il y a d'autres réglages sympa à faire pendant la config du noyau tant qu'on y est, mais ceux-la sont indépendants des améliorations RT : fréquence du proc au max, désactivation de la gestion automatique de l'alim...)
(en fait, il y'a peut etre d'autres options liées, à vérifier : High-Resolution Timer (utilisé par rosegarden il me semble, Deterministic Scheduler (on en a besoin pour la MAO de ca ?) )
les améliorations RT importantes et déjà intégrées au noyau vanilla sont, en plus des deux précédentes (sources ) :
  • Preemption Support
  • IRQ Threads (depuis linux 2.6.30)
  • Forced IRQ Threads (depuis linux 2.6.39)
à ma connaissance, ce sont les améliorations qui font gagner des milisecondes, et sont donc utiles à la MAO, les autres améliorations toujours en développement (le patch RT actuel) sont mimines à coté (font gagner des microsecondes, ca peut etre utile à l'industrie, mais pas vraiment pour nous)
la nouveauté, c'est donc les threaded IRQ, cette fonction oblige à utiliser en plus un utilitaire système comme rtirq (voir Temps-réel pour les processus IRQ)
c'est un changement important car les personnes qui utilisaient un noyau ''vanilla' en mode RT n'avaient pas jusqu'à présent à faire celà, et les questions sur le forum du genre "ca marche plus" vont bientôt tomber.

j'aimerai savoir si j'ai bien tout juste, et aussi avoir des détails sur les 2 options de conf du noyau High-Resolution Timer et Deterministic Scheduler (je ne suis pas sur que cette dernière soit une conf à part d'ailleur, elle est peut etre incluse dans Complete Preemption), vous en savez plus ?

si tout le monde est bien d'accord, alors on peut passer à la ré-écriture partielle des pages sur le noyau RT, encore une fois les points importants à aborder sont :
  • le patch RT ne sert à rien pour la MAO, pour du RT dur sans souci utilisez un noyau vanilla ou similaire avec les options RT stables appropriées
  • gestion obligatoire des priorités des IRQ (avec rtirq par exemple)
  • rabachage : patchez votre noyau seulement si vous souhaitez aider à débugguer, pas pour faire de la musique !!

j'en profite pour proposer un plan (hierarchie) pour ce dossier :
dans optimisations système :


j'attend vos commentaires ! wink

oliv'

jy_moustache utilisateur non connecté
perso j'ai jamais rien compris a ces histoires de différences entre noyau RT, realtime, et autres ...
donc je peux pas trop t'aider

sorry
jy

pianolivier utilisateur non connecté France
Citation :
perso j'ai jamais rien compris a ces histoires (..)

ah ca oui, c'est plutot un sujet pour les geeks smile
il n'yu a peut etre pas de spécialiste/dev du noyau RT ici mais si chacun ajoute ce qu'il sait on devrai arriver à faire quelque chose de correct wink

ps : il ne s'agit pas vraiment de m'aider cool

youki utilisateur non connecté
pianolivier écrit :
la nouveauté, c'est donc les threaded IRQ, cette fonction oblige à utiliser en plus un utilitaire système comme rtirq (voir gestion des IRQ)
c'est un changement important car les personnes qui utilisaient un noyau ''vanilla' en mode RT n'avaient pas jusqu'à présent à faire celà, et les questions sur le forum du genre "ca marche plus" vont bientôt tomber.


Si c'est juste de dire d'installer rtirq, considérant que bien 95% des demandes d'aide viennent d'utilisateurs d'Ubuntu, ce sera simple il y a un paquet rtirq-init à installer maintenant.

youki utilisateur non connecté
pianolivier écrit :
@youki : les retours du genre "le noyau vanilla configuré RT est dispo pour ma distrib", c'est par ici merci.


Le noyau 3.0.0 installé aujourd'hui sur la Debian sid depuis les dépôts semble ne poser aucun problèmes. Toujours pas le moindre x-runs pour l'instant, on verra à l'usage.

Et en plus je viens de me rendre compte qu'il y a un noyau linux 3.0.0 RT amd64 dans sid maintenant en plus! Il n'y avait jamais eu de noyaux RT dans les dépôts auparavant.

Pour le RT ça a été vite vu, les drivers nvidia n'ont pas voulu se compiler dessus et comme le 3.0.0 de base semble fonctionner correctement, je le garde pour l'instant.

youki utilisateur non connecté
Pour info le noyau debian 3.0.0-1-rt-amd64 fonctionne avec les drivers nouveau par contre.

j'en profite pour proposer un plan (hierarchie) pour ce dossier :
dans optimisations système :

noyau RT (ajouter les explications de ce post)
Compiler un noyau 2.6RT (supprimer le paragraphe "patchage" et renommer la page en "compiler un noyau RT" tout court avec l'arrivée de linux 3.0 qui n'est pas vraiment différent à ce niveau là)
gestion des IRQ (à finir d'écrire)


Ouaip ça me semble pas mal. Je pense que probablement dans l'avenir ces pages ne seront même plus vraiment lues parce que ça fonctionnera avec le noyau de base et que les gens ne se poseront même plus trop la question.

pianolivier utilisateur non connecté France
Citation :
ces pages ne seront même plus vraiment lues parce que ça fonctionnera avec le noyau de base


pas faux, mais ca dépend de la distribution, genre ca devrai plaire aux gentooistes et autres bidouilleurs. wink

sinon, plutôt que de refaire Tuto Compiler un noyau Temps-Réel, ce qui me semble complexe, j'ai commencé un brouillon compiler un noyau linux 3.x pour la mao. Je viderai la première page (Compiler un noyau 2.6) au fur et à mesure dans la deuxième, une fois que celle-ci sera complète on pourra tout recopier dans Compiler un noyau 2.6 (à renommer ensuite)

oliv'

olinuxx utilisateur non connecté France
pianolivier écrit :
youki écrit :
ces pages ne seront même plus vraiment lues parce que ça fonctionnera avec le noyau de base


pas faux, mais ca dépend de la distribution, genre ca devrai plaire aux gentooistes et autres bidouilleurs. wink



Exact et c'est la qu'on voit que ca avance ! Moins besoin de bidouiller le noyal comme un cochon ?!?!? Tant mieux ! :-)


pianolivier écrit :
sinon, plutôt que de refaire Tuto Compiler un noyau Temps-Réel, ce qui me semble complexe, j'ai commencé un brouillon compiler un noyau linux 3.x pour la mao. Je viderai la première page (Compiler un noyau 2.6) au fur et à mesure dans la deuxième, une fois que celle-ci sera complète on pourra tout recopier dans Compiler un noyau 2.6 (à renommer ensuite)


Bon plan d'attaque.



Pour l'orga' de cette partie, on a pour l'instant :

LE NOYAU
  • Le noyau
  • Le noyau Temps-Réel
  • Compiler un noyau 2.6 RT


et on aura :

LE NOYAU
  • Le noyau
  • Le noyau Temps-Réel
    • Compiler un noyau
    • gestion des IRQ (à finir d'écrire)

C'est ca ?
si oui, ca me semble un très bon plan

Olivier

random utilisateur non connecté
Salut à tous!

Est-ce que ça vous intéresse un premier jet sur compiler un noyeau 3 rt ( compiler un noyau linux 3.x pour la mao ) ? J'ai une procédure qui a fonctionné pour moi sous Ubuntu oneiric ...

pianolivier utilisateur non connecté France
Citation :
Est-ce que ça vous intéresse un premier jet sur compiler un noyau linux 3.x pour la mao ?


avec plaisir smile
tu peux voir que je n'ai pas beaucoup avancé sur cette page pour le moment, alors hésite pas !
je pense qu'il est mieux que cette doc reste générale, mais il faudra bien entendu aussi faire des paragraphes spécifiques aux distributions (pour le téléchargement des sources et le coté grub), genre :


téléchargement/installation des sources

ubuntu :
...
gentoo :
...
autres distrib' :
...

configuration

...pour toutes les distrib'...

make et copie du résultat dans /boot

...pour toutes les distrib'...

configurer grub

ubuntu :
...
gentoo :
...
autres distrib' :
...


en tout cas je prefere ca à l'orga actuelle de Tuto Compiler un noyau Temps-Réel, qu'en penses-tu ?

oliv'

olinuxx utilisateur non connecté France
Il faut vraiment refaire ce dossier car il y est écrit que le noyau RT est nécessaire pour utiliser rtirq, ce qui est faux car depuis les versions 2.6.39 du noyau, la partie du patch RT qui permet de traficotter les threads IRQ a été intégré dans la branche principale du noyau. On y accède donc en ajoutant "threadirqs" à la ligne GRUB du noyau :
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs"


Dominique utilisateur non connecté Suisse
Avec les gentoo sources 6,1,18, je n'ai pas l'option Preemption Model = Complete Preemption (Real-Time) (CONFIG_PREEMPT_RT) dans "make menuconfig". Donc soit elle n'y est pas, soit c'est une option expérimentale qui n'est pas disponible car j'ai USE="-experimental" dans ma config. Je peux vérifier bientôt car je suis en train de préparer un update système.

Dominique utilisateur non connecté Suisse
Sur Le noyau Temps-Réel, j'ai mis à jour le lien sur le nouveau site du noyau rt https://wiki.linuxfoundation.org/realtime/start

On peut y constater entre autre que le noyau rt offre maintenant la même stratégie de support à plus ou moins long terme que le vanilla. https://wiki.linuxfoundation.org/realtime/start#versions_of_preempt_rt_patches :

Dernière version de développement Version 6.4-rt
Dernière version stable 6.1-rt

La durée de vie des versions stables est beaucoup plus longues car ce sont ces versions que l'industrie utilise pour tout ce qui est production. Quand des bugs sont trouvés dans les versions de développement, des qu'il y a des correctifs qui fonctionnent, ils sont inclus dans les versions stables si elles sont concernées. Ce sont les seuls modifs qu'ils font sur les kernels stables.

Perso, j'ai 2 kernels installés dans mon gentoo, le gentoo-sources et le rt-sources, tous les 2 en version stable 6.1.*, et tout le reste du système en ~amd64, plus ou moins debian testing. Plus quelques logiciels en version live depuis les dépôts de code source. J'avais passé les kernels en stable suite à des problèmes de stabilité avec quelques-unes des dernières versions de développement. Il y a toujours des bugs et des fois ça peut vraiment beugler le système avec ces dernières.

Dominique utilisateur non connecté Suisse
Avec le 6.1.45 et USE="experimmental", je n'ai toujours rien dans Premption model. Par contre dans les cgroups, il y a:

Location:                                                                                                                                                                            │  
  │     -> General setup                                                                                                                                                                   │  
  │       -> Control Group support (CGROUPS [=y])                                                                                                                                          │  
  │         -> CPU controller (CGROUP_SCHED [=y])                                                                                                                                          │  
  │ (1)       -> Group scheduling for SCHED_RR/FIFO (RT_GROUP_SCHED


Donc dans le kernel vanilla et je pense dans ceux de tous les kernels des distributions "standards", le temps réel passe par les cgroups et le kernel doit être reconfiguré et réinstallé pour ça. Autant utiliser le -rt, sans RT_GROUP_SCHED dans les CGROUPS et avec CONFIG_PREEMPT_RT, car ce sont 2 solutions concurrentes et CONFIG_PREEMPT_RT est plus simple, bien testé et il a fait ses preuves. De plus j'avais lu il y a quelques années que les devs du kernel n'étaient même pas sur de conserver RT_GROUP_SCHED dans le kernel. Avec un système openrc, il doit même être possible de virer compplètement les cgroups de la config du kernel rt. Avec un système systemd, ça ne marchera pas car systemd a besoin des CGROUPS.

Dominique utilisateur non connecté Suisse
Avec le 6.1.45 et USE="experimental", j'ai 41 options dans la config du processeur... cool