Historique: Temps-réel pour les processus IRQ
Aperçu de cette version: 97
! Page en cours de germination !
Cette page va dcrire les dmarches effectuer pour configurer l'accs temps-rel des applications et du matriel pour un noyau temps-rel.
Lorsque vous utilisez un noyau temps-rel, vous devez non seulement configurer la priorit temps-rel de vos applications (voir la page Temps-rel pour les applications), mais aussi la priorit de votre carte son et de l'horloge systme. Ceci est capital car donner aux applications une priorit suprieure celle de votre matriel audio peut vous causer bien des problmes !
Dmarrez un terminal.
Vrifiez pour commencer que vous avez bien suivi la procdure qui permet de configurer l'accs temps rel pour les applications (voir PAM).
Pour cela, la commande
grep sur le fichier de configuration de PAM fait notre affaire :imprimer rtprio
Copy to clipboard
~~blue:#~~ grep rtprio /etc/security/limits.conf @audio - ~~red:rtprio~~ 90
rtprio est la valeur de priorit maximale que vous avez fixe pour les applications audio (les "clients" de JACK)
➡️ Si besoin se reporter la page PAM pour localiser le fichier de configuration de PAM.
Vrifiez aussi que vous tes dans le groupe audio
lister les groupes
Copy to clipboard
~~blue:#~~ groups votre_utilisateur cdrom ... audio ...
Enfin, vrifiez que vous dmarrez JACK avec une valeur de priorit de 70 (-P70).
vrifier
Pourquoi ?
Vous l'avez compris, brider la priorit des applications 90 nous laisse un peu de marge pour placer les IRQ ncessaires au dessus.Heureusement pour nous, le noyau Linux peut contrler 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 dfaut, suprieure celle des autres applications, et elle nous est invisible/intouchable.
Mais avec le patch temps-rel du noyau temps-rel (module CONFIG_PREEMPT_RT), on peut 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 intressent ont une priorit faible par dfaut (autour de 50), ce qui peut crer 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 jte dit je vais louper mon bus !
- alsa_driver@50 : attention !!...
... vous devinez le reste de la scne : 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 ! 🙄.
Rsultat de l'exprience : blocage total du rseau de bus, autrement connu sous le nom de x-runs.
Savoir "quel processus" est rgl sur "quelle priorit" est facile, une simple commande linux de base ps argumente comme il faut suffit :
lister les processus :
Copy to clipboard
~~blue:#~~ ps -eo pid,class,rtprio,cmd
ps imprime des "process snapshot" et dvoile mme 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 (trs) longue en fonction du systme utilis, ajoutons un filtre pour ce qui nous intresse :
lister les ~034~processus IRQ~034~
Copy to clipboard
~~blue:#~~ ps -eo pid,class,rtprio,cmd | grep -i IRQ
| grep -i cherche le mot "IRQ" dans le rsultat de la commande prcdente et affiche les occurences
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 intresse ! Mais attendez un instant et observez le rsultat de votre commande : o est "la carte son" ? et "l'horloge systme" ?
La liste que vous voyez est compose dans l'ordre de (pour chaque processus) :
numro identifiant, classe "temps-rel", priorit "temps-rel" (TS pour standard/SCHED_OTHER et FF pour SCHED_FIFO/temps-rel) et enfin la ligne de commandes invoque.
...to be continued
l'horloge systme haute rsolution : rtc0
les cartes sons , trouver le bon numro d'irq avec /proc/interrupts
Les nuds pci, changer les irq ?
(en cours d'criture)
(en cours d'criture)
- Pour les cartes ISA : "isapnptools". Voir par exemple ici : http://www.trustonme.net/didactels/119.html.
- Certaines cartes (ISA) disposent de "jumpers" permettant cette modification
- Certains BIOS permettent l'attribution d'IRQ (aux slots PCI par exemple)
- Changez le priphrique de slot PCI si votre carte-mre en possde plusieurs !
- Dsactivez/retirez les priphriques inutiliss (rorganisation des IRQ)
- Pour dsactiver l'ACPI qui a tendance se placer sur l'IRQ 9, placer le paramtre "acpi=off" au dmarrage (avec Grub ou Lilo)
automatiser tout ca
il existe un script tout prt pour automatiser tout ce procd, voir rtirqEn savoir plus
liens :le sujet de forum li cette page : tiki-view_forum_thread.php?forumId=8&comments_parentId=24403
autre sujet li avec quelques explications supplmentaires : tiki-view_forum_thread.php?forumId=2&comments_parentId=35312
dfinition IRQ : http://www.pcmus.com/irq.htm
le module CONFIG_RT_GROUP_SCHED : http://www.mjmwired.net/kernel/Documentation/scheduler/sched-rt-group.txt
comprendre la basse latence : Hardware interrupts, schedulers : http://ccrma.stanford.edu/planetccrma/software/understandlowlat.html
schedulers and policies : http://ccrma.stanford.edu/planetccrma/man/man2/sched_setscheduler.2.html
IRQ Priorities : vue gnrale et utilisation de chrt http://tapas.affenbande.org/wordpress/?page_id=40
configuration du systeme par linuxmusicians : http://wiki.linuxmusicians.com/doku.php?id=system_configuration#priorities
- La page de WikiPdia
- Le fil suivant (en anglais)
- http://www-128.ibm.com/developerworks/library/l-hw2.html#N10093 (en anglais)
- Basse latence chez LinuxAudio.org (en anglais)
[+]