Skip to main content

Historique: Temps-réel pour les processus IRQ

Aperçu de cette version: 97

Image
! 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 rtirq


En 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




[+]

Historique

Information Version
Tue 13 Mar 2018 11:30 olinuxx 106 - 116
Afficher
Thu 19 Jan 2017 17:35 Thieriki 105
Afficher
Fri 06 Nov 2015 14:47 olinuxx Recherche et remplacement en masse 104
Afficher
Fri 05 Sep 2014 17:58 olinuxx Recherche et remplacement en masse 103
Afficher
Wed 03 Sep 2014 10:09 olinuxx Recherche et remplacement en masse 100 - 102
Afficher
Wed 06 Nov 2013 08:56 pianolivier wiki_up conversion 99
Afficher
Wed 27 Feb 2013 20:13 utilisateur_anonyme2 98
Afficher
Sun 05 Aug 2012 12:18 olinuxx 96 - 97
Afficher
Sun 20 mai 2012 12:52 pianolivier suppression de la page ((IRQ)) + alias 94 - 95
Afficher
Sat 19 mai 2012 19:44 pianolivier 92 - 93
Afficher
Thu 17 mai 2012 17:34 pianolivier modif lien(s) interne(s) 91
Afficher
Sat 12 mai 2012 17:55 pianolivier 89 - 90
Afficher
Mon 09 Apr 2012 16:33 pianolivier +BOX 88
Afficher
Wed 21 Mar 2012 19:37 pianolivier fil d'ariane 87
Afficher
Tue 20 Mar 2012 22:00 pianolivier suppression BOX (début de réorga du dossier) 86
Afficher
Sun 11 Mar 2012 14:47 pianolivier 85
Afficher
Sun 11 Mar 2012 14:09 pianolivier 83 - 84
Afficher
Wed 22 Feb 2012 20:09 Dominique Ajout de cgroup dans box 82
Afficher
Wed 01 Feb 2012 18:28 pianolivier +1lien forum 81
Afficher
Sat 24 Sep 2011 21:49 pianolivier déplacement de 2 liens dans ((rtirq)) 80
Afficher
Thu 22 Sep 2011 18:32 pianolivier déplacement de §rtirq sur une page dédiée ((rtirq)) 79
Afficher
Thu 22 Sep 2011 16:55 pianolivier supp alias (rtirq) pour création de page 78
Afficher
Sun 29 mai 2011 14:33 pianolivier +alias (rtirq) 77
Afficher
Sun 06 Mar 2011 13:50 pianolivier lien install debian 75 - 76
Afficher
Mon 17 Jan 2011 03:39 olinuxx enlevage du lien "dur" + liens internes + maj/min 74
Afficher
Sun 16 Jan 2011 23:33 pianolivier ajout d'un paragraphe tiré de l'ancienne doc ffado 73
Afficher
Tue 04 Jan 2011 13:25 olinuxx BOX 72
Afficher
Mon 20 Dec 2010 22:08 olinuxx + BOX 71
Afficher
Mon 06 Dec 2010 21:53 olinuxx correction sinon je vais me faire super disputer par pianolivier :P 70
Afficher
Mon 06 Dec 2010 08:57 olinuxx mise en page 67 - 69
Afficher
  • «
  • 1 (en cours)
  • 2