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


Avertissementattention
page en cours d'écriture
(pianolivier - 2013)

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 temps-réel.

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
~~blue:#~~ grep rtprio /etc/security/limits.conf
@audio - ~~red: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
~~blue:#~~ 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.

Mais avec le patch temps-réel du noyau temps-réel (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 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 jte 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 :
~~blue:#~~ 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 ~034~processus IRQ~034~
~~blue:#~~ 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 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 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.

...to be continued

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

(en cours d'écriture)

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

(en cours d'écriture)
  • 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 ca

il existe un script tout prêt pour automatiser tout ce procédé, 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 supplémentaires : forumthread35312
définition 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 générale 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




[+]

Documentation [Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

bluedid29, 00:41, ven. 31 mars 2017: A l'attention par exemple de zebassprophet qui m'avais posé la question ;-)
bluedid29, 00:39, ven. 31 mars 2017: J'ai posté ici pour expliquer quels soundfont j'avais employé (morceau joute nr10) : [Lien]
Samuel, 20:07, jeu. 30 mars 2017: @sub26nico, elle a un mode CC où on a accès aux 12 e/s. Donc compatible. Et on peut l'utiliser seule comme pré-ampli dans ordi
olinuxx, 19:51, jeu. 30 mars 2017: bonjour et bienvenue à Tomny, douxy, et à moonshadow :-)
sub26nico, 17:16, jeu. 30 mars 2017: @Samuel: tiens nous au jus pour la babyface pro, j'envisage de la prendre, je suis curieux de savoir sa compatibilité avec GNU/Linux
Samuel, 15:51, jeu. 30 mars 2017: Je reçois une rme babyface pro demain si tout va bien youhou
ycollet, 13:13, mer. 29 mars 2017: Pineal, un super truc pour le live coding ... [Lien]
allany, 08:30, mer. 29 mars 2017: Quelqu'un aurait-il des infos sur les caractéristiques du driver snd-usb-audio ? Nb E/S, échantillonnages supportés, ... afin d'éviter d'écrire des âneries à ce sujet dans les forums.
olinuxx, 14:31, lun. 27 mars 2017: bonjour et bienvenue à Antoine33/33antoine, et à El-Brouno :-)
Antoine33, 02:26, lun. 27 mars 2017: Bonsoir à tous! Je viens de m'inscrire!
olinuxx, 19:29, sam. 25 mars 2017: bonjour et bienvenue à Foretriks :-)
bluedid29, 15:16, sam. 25 mars 2017: N'hésitez-pas à participer, discuter, papoter... ...et bon week-end ! :-)