rtirq est un utilitaire de configuration pour le noyau permettant la priorisation des threads IRQ du celui-ci.
Il s'agit plus précisément d'un script permettant d'automatiser le réglage des priorités temps-réel des threads IRQ pour les noyaux.
Site web officiel : http://www.rncbc.org/.
Version actuelle : 20240220 du 2024 02 20.
Licence : GNU GPL v2.
Plateforme : GNU/Linux.
Développeur : Rui Nuno Capela.
rtirq est un script bash, destiné à être démarré automatiquement lors de l'initialisation du système. Il permet d'augmenter la priorité des threads IRQ, afin d'optimiser la latence des périphériques (interfaces-son). Pour comprendre le pourquoi du comment ou pour apprendre à faire la même manipulation "à la main", rendez-vous sur la page Temps-réel pour les processus IRQ.
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 on peut voir quel thread IRQ est greffé sur quelle IRQ.
Voici un extrait de ce que j'obtiens sur ma machine MAO :
Voici ce qui m'intéresse dans ma configuration de type MAO :
conflit d'intérêt :
Observons une minute l'IRQ n°16. 2 modules se le partagent : firewire_ohci et uhci_hcd:usb3.
Pour éviter les conflit d'intérêt, il vaut mieux déconnecter tout disque-dur et autre périphérique haut-débit branché sur le port usb n°3.
Pour savoir quel périphérique utilise quel port usb, utilisez l'outil lsusb (du paquet usb-utils)
chacun de mes périphérique ont leur IRQ dédiée, conflit évité !
vous aurez peut-être aussi besoin de savoir quels modules sont utiles sur votre machine :
ou d'en apprendre plus sur vos ports pci :
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 :
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, uhci_hcd:usb3 se fait petit en usb3 et rtc0 se raccourcit en rtc.
exemples de configuration :
test :
Le test consiste en l'exécution 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 :
Ceci ne fonctionne cependant que pour les périphériques déjà branchés et allumés au démarrage du système. Si vous branchez votre carte son usb après l'étape d'init, il vous faudra redémarrer le service à la main (voir le restart plus haut) ou créer une règle udev? personnalisée.
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.
[+]
Il s'agit plus précisément d'un script permettant d'automatiser le réglage des priorités temps-réel des threads IRQ pour les noyaux.
Note : avant le noyau 2.6.39, il fallait absolument un noyau temps-réel pour pouvoir faire fonctionner ce script. Depuis le noyau 2.6.39, il n'est plus obligatoire d'utiliser un noyau RT pour régler les priorités temps réel des IRQ car le noyau standard le supporte également en ajoutant l'option "threadirqs" à la ligne "GRUB_CMDLINE_LINUX_DEFAULT=" du fichier de configuration de grub.
Table des matières
Informations
Site web officiel : http://www.rncbc.org/.
Version actuelle : 20240220 du 2024 02 20.
Licence : GNU GPL v2.
Plateforme : GNU/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 permet d'augmenter la priorité des threads IRQ, afin d'optimiser la latence des périphériques (interfaces-son). Pour comprendre le pourquoi du comment ou pour apprendre à faire la même manipulation "à la main", rendez-vous sur la page Temps-réel pour les processus IRQ.
Installation
[+]Utilisation
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 :
$ cat /proc/interrupts
Chaque ligne correspond à un IRQ, et on peut voir quel thread IRQ est greffé sur quelle IRQ.
Voici un extrait de ce que j'obtiens sur ma machine MAO :
n°IRQ 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 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
Voici 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)
conflit d'intérêt :
Observons une minute l'IRQ n°16. 2 modules se le partagent : firewire_ohci et uhci_hcd:usb3.
Pour éviter les conflit d'intérêt, il vaut mieux déconnecter tout disque-dur et autre périphérique haut-débit branché sur le port usb n°3.
Si votre carte son partage l'IRQ d'un périphérique que vous ne pouvez pas déconnecter (comme une carte réseau), limitez son utilisation (désactivation partielle ou totale) ou changez votre carte son de port.
Pour savoir quel périphérique utilise quel port usb, utilisez l'outil lsusb (du paquet usb-utils)
$ lsusb Bus 001 Device 00X: un disque dur (IRQ 18) Bus 002 Device 00X: une clef wifi (IRQ 17) Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub (rien) (IRQ 16 partagée avec ma carte son) ...
chacun de mes périphérique ont leur IRQ dédiée, conflit évité !
vous aurez peut-être aussi besoin de savoir quels modules sont utiles sur votre machine :
$ lsmod
ou d'en apprendre plus sur vos ports pci :
$ lspci
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 :
- par défaut : /etc/sysconfig/rtirq
- gentoo : /etc/conf.d/rtirq
- Debian et dérivées, etc. : /etc/default/rtirq
- 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, uhci_hcd:usb3 se fait petit en usb3 et rtc0 se raccourcit en rtc.
exemples de configuration :
- avec notre exemple ci-dessus (carte son firewire) on obtient :
RTIRQ_NAME_LIST="rtc firewire" - si vous utilisez l'ancien stack firewire (voir FFADO - configuration) :
RTIRQ_NAME_LIST="rtc ohci1394" - si votre carte son usb est sur le port n°3 et que vous avez d'autre périphériques moins importants ailleursc
RTIRQ_NAME_LIST="rtc usb3" - si vous changez souvent votre carte son de port usb, et vous voulez donner la priorité à tous les ports, vous pourrez écrire :
RTIRQ_NAME_LIST="rtc ehci_hcd uhci_hcd"
test :
Le test consiste en l'exécution du script qui imprimera à l'écran ce qui se passe. Vous devrez avoir les droits super utilisateur pour cela.
$ su -c "/etc/init.d/rtirq start"
Il vous faudra refaire cette manipulation à chaque modification de la configuration :
$ su -c "/etc/init.d/rtirq restart"
Lancement automatique
Lorsque vous êtes satisfait des tests effectués, il faut ajouter l’exécution du script au démarrage du système (init).Ceci ne fonctionne cependant que pour les périphériques déjà branchés et allumés au démarrage du système. Si vous branchez votre carte son usb après l'étape d'init, il vous faudra redémarrer le service à la main (voir le restart plus haut) ou créer une règle udev? personnalisée.
gentoo :
$ rc-update add rtirq default
Ubuntu : automatiquement ajouté au processus de démarrage lors de l'installation du paquet ??
ou alors :
$ update-rc.d rtirq defaults
Mandriva :
$ chkconfig --level 5 rtirq on
(voir aussi "drakxservice")
Redhat/Fedora :
$ chkconfig --add rtirq
pour les autres : vérifiez dans le manuel.
$ man chkconfig
Changelog
[+]Liens
En savoir plus :- http://alsa.opensrc.org/Rtirq
- http://subversion.ffado.org/wiki/IrqPriorities
- http://wiki.linuxaudio.org/wiki/system_configuration#rtirq
[+]