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

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.

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.


Image




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)
Nous allons donc donner à ces deux threads IRQ une priorité au dessus des applications audio.

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
il vous faudra les droits super utilisateur pour modifier ce fichier. Dedans vous trouverez un tas de bla-bla (un peu comme ici wink) 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 !
Le premier point dépendra donc de votre système, pour les 3 suivants vous pouvez recopier les valeurs proposées ici.
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"
vous pouvez ajouter au besoin dans la liste le module de votre disque dur usb qui récupère les enregistrements (sur un autre IRQ), votre contrôleur MIDI,...

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 :


[+]


Collaborateur(s) de cette page : olinuxx , Sasaki , fbz , pianolivier , utilisateur_anonyme et xzu .
Page dernièrement modifiée le Samedi 14 mai 2022 20:08:32 par olinuxx.
Le contenu de cette page est licencié sous les termes licence.

Documentation [Afficher / Cacher]

Faire un don
[Afficher / Cacher]

Connexion
[Afficher / Cacher]



Mégaphone [Afficher / Cacher]

olinuxx, 11:48, ven. 15 mars 2024: Bonjour et bienvenue à Jerry cool
calixtus06, 18:03, mer. 13 mars 2024: Bonjour et bienvenue à tanguero :-)
olinuxx, 11:01, dim. 10 mars 2024: Bonjour et bienvenue à lolo cool
bda, 16:59, sam. 09 mars 2024: Chapeau pour l'édito. Vous êtes au top les gars :-)
allany, 07:20, jeu. 07 mars 2024: Ça ne fait jamais de mal, c'est l'éditorial ! [Lien]
olinuxx, 19:52, mer. 06 mars 2024: Bonjour et bienvenue à TrkNrk cool
calixtus06, 11:17, mar. 05 mars 2024: Bonjour et bienvenue à D752 :-)
calixtus06, 18:59, lun. 04 mars 2024: Bonjour et bienvenue à Hborsa et Adjudandouille :-)
olinuxx, 18:34, jeu. 29 Feb 2024: Bonjour et bienvenue à anto45500 cool
jujudusud, 23:38, mar. 27 Feb 2024: Venez participer à la joute numéro 17 : [Lien]
calixtus06, 18:36, jeu. 22 Feb 2024: Bonjour et bienvenue à nikartri et rckloar :-)
calixtus06, 10:15, mer. 14 Feb 2024: Bonjour et bienvenue à smonff, Alphascorpii, tadumtss et letoII :-)