Chargement...
 
[Voir/Cacher menus de gauche]
[Voir/Cacher menus de droite]



Cette page va décrire les démarches à effectuer pour configurer l'accès temps-réel des applications et du matériel pour un noyau Linux.

Lorsque vous utilisez un noyau temps-réel, vous devez non seulement configurer la priorité temps-réel de vos applications (voir la page Temps-réel pour les applications), mais aussi la priorité de votre carte son et de l'horloge système. Ceci est capital car donner aux applications une priorité supérieure à celle de votre matériel audio peut vous causer bien des problèmes !




Accès temps-réel applications


Démarrez un terminal.

Vérifiez pour commencer que vous avez bien suivi la procédure qui permet de configurer l'accès temps réel pour les applications (voir PAM).

Pour cela, la commande grep sur le fichier de configuration de PAM fait notre affaire :
imprimer rtprio
grep rtprio /etc/security/limits.conf
@audio - rtprio 90

rtprio est la valeur de priorité maximale que vous avez fixée pour les applications audio (les "clients" de JACK)

arrow Si besoin se reporter à la page PAM pour localiser le fichier de configuration de PAM.

Vérifiez aussi que vous êtes dans le groupe audio
lister les groupes
groups
votre_utilisateur cdrom ... audio ...

Enfin, vérifiez que vous démarrez JACK avec une valeur de priorité de 70 (-P70).
à vérifier



Accès temps-réel IRQ

Pourquoi ?


Vous l'avez compris, brider la priorité des applications à 90 nous laisse un peu de marge pour placer les IRQ nécessaires au dessus. Heureusement pour nous, le noyau Linux peut contrôler l'attribution de la priorité des IRQs par des processus, que nous appellerons "processus IRQ".

Pour un noyau standard (module CONFIG_PREEMPT_DESKTOP), la priorité des "processus IRQ" est, par défaut, supérieure à celle des autres applications, et elle nous est invisible/intouchable.

Depuis les noyaux 2.6.39, il n'est plus obligatoire d'utiliser un noyau temps-réel pour régler les priorités temps réel des IRQ. Le noyau standard le supporte également en ajoutant l'option "threadirqs" à l'option "GRUB_CMDLINE_LINUX_DEFAULT=" de votre fichier de conf' grub. Et nous pouvons donc modifier la priorité des "processus IRQ" facilement ce qui nous apporte une grande souplesse et c'est tout bon pour nous ! Ceci dit, cette configuration est un passage obligé car : les "processus IRQ" qui nous intéressent ont une priorité faible par défaut (autour de 50), ce qui peut créer des conflits avec les applications audio :

Exemple de discussion entre 2 processus audio : (mauvaise configuration)
  • jacques_kit@70 : laiiiiiiiisse passer !
  • alsa_driver@50 : attend je...
  • jacques_kit@70 : pousse toi ch'te dit je vais louper mon bus !
  • alsa_driver@50 : attention !!...

... vous devinez le reste de la scène : jacques_kit@70 pousse alsa_driver@50 dans le fossé...
... en croyant pouvoir "choper son bus", mais sans savoir que...
... bah c'était alsa_driver@50, le conducteur du bus ! rolleyes.

Résultat de l'expérience : blocage total du réseau de bus, autrement connu sous le nom de x-runs.




voir la priorité des "processus IRQ"


Savoir "quel processus" est réglé sur "quelle priorité" est facile, une simple commande linux de base ps argumentée comme il faut suffit :
lister les processus :
ps -eo pid,class,rtprio,cmd

ps imprime des "process snapshot" et dévoile même les processus critiques avec l'option -e
l'option -o nous permet d'avoir des informations de notre choix en plus.

La liste peut être (très) longue en fonction du système utilisé, ajoutons un filtre pour ce qui nous intéresse :
lister les processus IRQ
ps -eo pid,class,rtprio,cmd | grep -i IRQ

| grep -i cherche le mot "IRQ" dans le résultat de la commande précédente et affiche les occurrences

ps -eo pid,class,rtprio,cmd | grep -i IRQ
[sudo] password for olinuxx: 
    4 FF      49 [sirq-high/0]
    5 FF      49 [sirq-timer/0]
    6 FF      49 [sirq-net-tx/0]
    7 FF      49 [sirq-net-rx/0]
    8 FF      49 [sirq-block/0]
    9 FF      49 [sirq-tasklet/0]
   10 FF      49 [sirq-sched/0]
   11 FF      49 [sirq-hrtimer/0]
   12 FF      49 [sirq-rcu/0]
   18 FF      49 [sirq-high/1]
   19 FF      49 [sirq-timer/1]
   20 FF      49 [sirq-net-tx/1]
   21 FF      49 [sirq-net-rx/1]
   22 FF      49 [sirq-block/1]
   23 FF      49 [sirq-tasklet/1]
   24 FF      49 [sirq-sched/1]
   25 FF      49 [sirq-hrtimer/1]
   26 FF      49 [sirq-rcu/1]
  206 FF      50 [irq/9-acpi]
  549 FF      50 [irq/21-sata_uli]
  568 FF      50 [irq/14-pata_ali]
  569 FF      50 [irq/15-pata_ali]
  655 FF      80 [irq/23-ehci_hcd]
  660 FF      80 [irq/17-ohci_hcd]
  664 FF      79 [irq/18-ohci_hcd]
  668 FF      78 [irq/19-ohci_hcd]
  677 FF      75 [irq/1-i8042]
  687 FF      50 [irq/8-rtc0]
  904 FF      50 [irq/20-eth0]
  907 FF      50 [irq/23-ohci1394]
 1244 FF      50 [irq/7-parport0]
 1362 FF      50 [irq/22-HDA Inte]
 1892 FF      50 [irq/17-radeon@p]
10231 TS       - grep --color=auto -i IRQ


Voilà enfin la liste qui nous intéresse ! Mais attendez un instant et observez le résultat de votre commande : où est "la carte son" ? et "l'horloge système" ?

La liste que vous voyez est composée dans l'ordre de (pour chaque processus) :
numéro identifiant, classe "temps-réel", priorité "temps-réel" (TS pour standard/SCHED_OTHER et FF pour SCHED_FIFO/temps-réel) et enfin la ligne de commandes invoquée.

...à suivre...

l'horloge système haute résolution : rtc0

les cartes sons, trouver le bon numéro d'irq avec /proc/interrupts

Les nœuds pci, changer les irq ?




modifier les priorités


à écrire



Changer l'IRQ d'un périphérique


à écrire/rédiger

  • Pour les cartes ISA : "isapnptools" (lien mort). Voir par exemple ici : [http://www.trustonme.net/didactels/119.html](lien mort).
  • Certaines cartes (ISA) disposent de "jumpers" permettant cette modification
  • Certains BIOS permettent l'attribution d'IRQ (aux slots PCI par exemple)
  • Changez le périphérique de slot PCI si votre carte-mère en possède plusieurs !
  • Désactivez/retirez les périphériques inutilisés (réorganisation des IRQ)
  • Pour désactiver l'ACPI qui a tendance à se placer sur l'IRQ 9, placer le paramètre "acpi=off" au démarrage (avec Grub ou Lilo)


automatiser tout ça


Il existe un script tout prêt pour automatiser tout ce procédé, voir rtirq.



En savoir plus






[+]

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)