Historique: rtirq
Aperçu de cette version: 14
rtirq est un script permettant d'automatiser le réglage des priorités temps-réel des threads IRQ pour le noyau RT.
Version actuelle : 20240220.
Licence : GNU GPL v2.
Compatible : noyau RT.
Plateforme : Linux.
Développeur : Rui Nuno Capela.
gentoo : rtirq est présent dans l'overlay pro audio, il vous faudra le démasquer :
Ubuntu/ debian sid: le paquet à installer est nommé rtirq-init
debian 6 squeeze : voir ici
à la main : Vous trouverez les sources ici : http://www.rncbc.org/jack/.
merci à vous de compléter ce paragraphe avec le procédé d'installation de votre distribution
Il est important de s'assurer au préalable de l'absence de conflit d'IRQ, et de repérer à quels thread IRQ donner les priorités les plus importantes.
Pour cela, démarrez un terminal et entrez la commande :
Chaque ligne correspond à un IRQ, et l'on peut voir quel thread IRQ est greffé sur quelle IRQ.
Voici un extrait de ce que j'obtiens sur ma machine mao :
j'ai mis en gras ce qui m'intéresse dans ma configuration de type mao :
conflit d'interet :
Mais attendez une minute, il n'y a que 2 IRQ, il y a conflit d'intérêt !
En effet, ma carte son et mon contrôleur MIDI partageant une IRQ (n°16), le trafic de l'un peut bloquer celui de l'autre, or personne n'aime les embouteillages.
La solution est simple, il suffit de débrancher le cable usb et de le brancher sur un nouveau port 😊
D'ailleur, comment savoir de quel port il s'agit ? l'outil lsusb (du paquet usb-utils) est idéal pour cela, exemple :
Mon contrôleur MIDI est maintenant sur le port numéro 6 (IRQ n°19 dans l'exemple), conflit évité !
note : je ne suis pas sûr que cela serve à grand chose d'ajouter mon contrôleur MIDI dans cette liste. Le principe est plutot valable pour les cartes-son cependant il me falait bien un exemple de conflit d'intérêt et je n'ai pas 15 cartes-son. Je ne suis pas responsable des bugs de votre machine.
le fichier de configuration :
Maintenant que vous avez repéré vos IRQ et threads IRQ, il faut renseigner rtirq à travers son fichier de configuration.
emplacements possibles :
il vous faudra les droits super utilisateur pour modifier ce fichier. Dedans vous trouverez un tas de bla-bla (un peu comme ici 😉) et quatre lignes importantes contenant :
Dans RTIRQ_NAME_LIST on peut mettre le nom complet du thread IRQ, ou une partie de son nom seulement.
ainsi firewire_ohci peut devenir firewire et rtc0 devient rtc.
exemples de configuration :
test :
Le test consiste en l'execution du script qui imprimera à l'écran ce qui se passe. Vous devrez avoir les droits super utilisateur pour cela.
Il vous faudra refaire cette manipulation à chaque modification de la configuration :
gentoo :
Ubuntu : automatiquement ajouté au processus de démarrage lors de l'installation du paquet ??
ou alors :
Mandriva :
(voir aussi "drakxservice")
Redhat/Fedora :
pour les autres : vérifiez dans le manuel.
En savoir plus :
[+]
Table des matières
Informations
Site web officiel : http://www.rncbc.org/.Version actuelle : 20240220.
Licence : GNU GPL v2.
Compatible : noyau RT.
Plateforme : Linux.
Développeur : Rui Nuno Capela.
Description
rtirq est un script bash, destiné à être démarré automatiquement lors de l'initialisation du système. Il s'utilise en conjonction avec un noyau RT pour augmenter la priorité temps-réel des threads IRQ, afin d'optimiser la latence des périphériques (cartes-son). l'utilisation de rtirq est une étape obligée lorsque l'on utilise un noyau RT avec jack. Pour comprendre le pourquoi du comment ou pour apprendre à faire la même manipulation "à la main", rendez-vous sur la page gestion des IRQ.Utilisation
Installation
pré-requis : Un noyau RT est obligatoire pour utiliser rtirq.gentoo : rtirq est présent dans l'overlay pro audio, il vous faudra le démasquer :
Copy to clipboard
~~blue:$~~ echo "sys-process/rtirq ~x86" >> /etc/portage/package.keywords ~~blue:$~~ emerge rtirq
Ubuntu/ debian sid: le paquet à installer est nommé rtirq-init
debian 6 squeeze : voir ici
à la main : Vous trouverez les sources ici : http://www.rncbc.org/jack/.
- téléchargez les sources
- décompressez l'archive
- en super utilisateur
- modifiez les permissions des 2 fichiers rtirq.conf et rtirq.sh pour qu'ils appartiennent à root.
- modifiez les permissions du fichier rtirq.conf pour le rendre accessible en lecture/écriture par root.
renommez le en rtirq et déplacez-le dans le répertoire /etc/sysconfig/ - modifiez les permissions du fichier rtirq.sh pour le rendre accessible en exécution.
renommez-le en rtirq et déplacez-le dans le répertoire /etc/init.d/.
Copy to clipboard
~~blue:$~~ mkdir -p ~/localbuilds/rtirq && cd ~/localbuilds/rtirq ~~blue:$~~ wget ~104~ttp://www.rncbc.org/jack/rtirq-20110314.tar.gz ~~blue:$~~ tar -zxvf rtirq-20110314.tar.gz ~~blue:$~~ cd rtirq-20110314 ~~blue:$~~ su -c "chown root rtirq.conf rtirq.sh" ~~blue:$~~ su -c "cp rtirq.conf /etc/sysconfig/rtirq && chmod 0644 /etc/sysconfig/rtirq" ~~blue:$~~ su -c "cp rtirq.sh /etc/init.d/rtirq && chmod 0755 /etc/init.d/rtirq"
merci à vous de compléter ce paragraphe avec le procédé d'installation de votre distribution
Réglages et tests
Il est important de s'assurer au préalable de l'absence de conflit d'IRQ, et de repérer à quels thread IRQ donner les priorités les plus importantes.
Pour cela, démarrez un terminal et entrez la commande :
Copy to clipboard
~~blue:$~~ cat /proc/interrupts
Chaque ligne correspond à un IRQ, et l'on peut voir quel thread IRQ est greffé sur quelle IRQ.
Voici un extrait de ce que j'obtiens sur ma machine mao :
Copy to clipboard
~hs~ CPU0 CPU1 0: 120 0 IO-APIC-edge timer 1: 2 0 IO-APIC-edge i8042 8: 0 0 IO-APIC-edge __rtc0__ 9: 0 0 IO-APIC-fasteoi acpi 16: 9367656 0 IO-APIC-fasteoi i915, __uhci_hcd:usb3__, __firewire_ohci__ 17: 2 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb5 18: 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb7 19: 28 0 IO-APIC-fasteoi uhci_hcd:usb6
j'ai mis en gras ce qui m'intéresse dans ma configuration de type mao :
- rtc est l'horloge interne haute vitesse, très important !
- firewire_ohci est le pilote de ma carte son firewire (nouveau stack juju, voir ffado_configuration)
- uhci_hcd:usb3 est le port usb relié à mon contrôleur MIDI
conflit d'interet :
Mais attendez une minute, il n'y a que 2 IRQ, il y a conflit d'intérêt !
En effet, ma carte son et mon contrôleur MIDI partageant une IRQ (n°16), le trafic de l'un peut bloquer celui de l'autre, or personne n'aime les embouteillages.
La solution est simple, il suffit de débrancher le cable usb et de le brancher sur un nouveau port 😊
D'ailleur, comment savoir de quel port il s'agit ? l'outil lsusb (du paquet usb-utils) est idéal pour cela, exemple :
Copy to clipboard
~~blue:$~~ lsub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 ... ... Bus 006 Device 002: ID 09e8:0068 AKAI Professional M.I. Corp.
Mon contrôleur MIDI est maintenant sur le port numéro 6 (IRQ n°19 dans l'exemple), conflit évité !
note : je ne suis pas sûr que cela serve à grand chose d'ajouter mon contrôleur MIDI dans cette liste. Le principe est plutot valable pour les cartes-son cependant il me falait bien un exemple de conflit d'intérêt et je n'ai pas 15 cartes-son. Je ne suis pas responsable des bugs de votre machine.
le fichier de configuration :
Maintenant que vous avez repéré vos IRQ et threads IRQ, il faut renseigner rtirq à travers son fichier de configuration.
emplacements possibles :
il vous faudra les droits super utilisateur pour modifier ce fichier. Dedans vous trouverez un tas de bla-bla (un peu comme ici 😉) et quatre lignes importantes contenant :
- RTIRQ_NAME_LIST="..."
liste des threads IRQ qui nous intéressent par ordre de priorité - RTIRQ_PRIO_HIGH="99"
priorité temps-réel maximum pour les threads IRQ - RTIRQ_PRIO_DECR="2"
pas de décrémentation de la priorité - RTIRQ_NON_THREADED=""
services ne devant PAS être threaded, laissez vide !
Dans RTIRQ_NAME_LIST on peut mettre le nom complet du thread IRQ, ou une partie de son nom seulement.
ainsi firewire_ohci peut devenir firewire et rtc0 devient rtc.
exemples de configuration :
- avec notre exemple ci-dessus on obtient :
RTIRQ_NAME_LIST="rtc firewire usb6" - si vous changez souvent votre carte son de port usb, vous pourrez écrire :
RTIRQ_NAME_LIST="rtc ehci_hcd uhci_hcd" - si vous utilisez l'ancien stack firewire (voir ffado_configuration) :
RTIRQ_NAME_LIST="rtc ohci1394"
test :
Le test consiste en l'execution du script qui imprimera à l'écran ce qui se passe. Vous devrez avoir les droits super utilisateur pour cela.
Copy to clipboard
~~blue:$~~ su -c "/etc/init.d/rtirq start"
Il vous faudra refaire cette manipulation à chaque modification de la configuration :
Copy to clipboard
~~blue:$~~ su -c "/etc/init.d/rtirq restart"
Lancement automatique
Lorsque vous êtes satisfait des tests effectués, il faut ajouter l'execution du script au démarrage du système (init).gentoo :
Copy to clipboard
~~blue:$~~ rc-update add rtirq default
Ubuntu : automatiquement ajouté au processus de démarrage lors de l'installation du paquet ??
ou alors :
Copy to clipboard
~~blue:$~~ update-rc.d rtirq defaults
Mandriva :
Copy to clipboard
~~blue:$~~ chkconfig --level 5 rtirq on
(voir aussi "drakxservice")
Redhat/Fedora :
Copy to clipboard
~~blue:$~~ chkconfig --add rtirq
pour les autres : vérifiez dans le manuel.
Copy to clipboard
~~blue:$~~ man chkconfig
Changelog
[+]Liens
En savoir plus :
[+]