Skip to main content

Historique: rtirq

Aperçu de cette version: 17

rtirq est un script permettant d'automatiser le réglage des priorités temps-réel des threads IRQ pour le noyau RT.



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


Ubuntudebian 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/.
Résumé en lignes de commandes pour la version du 14 mars 2011 :
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
Nous allons donc donner à ces trois threads IRQ une priorité au dessus des applications audio.

conflit d'interet :
Mais attendez une minute, pour 3 threads IRQ 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 :
  • par défaut : /etc/sysconfig/rtirq
  • gentoo : /etc/conf.d/rtirq
  • Debian : /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 😉) 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 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 :


[+]

Historique

Information Version
Samedi 24 septembre 2011 23:18 pianolivier 35
Afficher
Samedi 24 septembre 2011 23:17 pianolivier 34
Afficher
Samedi 24 septembre 2011 23:00 pianolivier 33
Afficher
Samedi 24 septembre 2011 22:59 pianolivier 32
Afficher
Samedi 24 septembre 2011 22:58 pianolivier 31
Afficher
Samedi 24 septembre 2011 22:56 pianolivier 30
Afficher
Samedi 24 septembre 2011 22:56 pianolivier 29
Afficher
Samedi 24 septembre 2011 22:41 pianolivier 28
Afficher
Samedi 24 septembre 2011 22:36 pianolivier 27
Afficher
Samedi 24 septembre 2011 22:34 pianolivier 26
Afficher
Samedi 24 septembre 2011 22:33 pianolivier 25
Afficher
Samedi 24 septembre 2011 22:32 pianolivier 24
Afficher
Samedi 24 septembre 2011 22:27 pianolivier 23
Afficher
Samedi 24 septembre 2011 22:25 pianolivier 22
Afficher
Samedi 24 septembre 2011 22:02 pianolivier 21
Afficher
Samedi 24 septembre 2011 21:53 pianolivier 20
Afficher
Samedi 24 septembre 2011 21:49 pianolivier 19
Afficher
Samedi 24 septembre 2011 21:46 pianolivier 18
Afficher
Samedi 24 septembre 2011 21:43 pianolivier 17
Afficher
Samedi 24 septembre 2011 21:40 pianolivier 16
Afficher
Samedi 24 septembre 2011 21:40 pianolivier 15
Afficher
Samedi 24 septembre 2011 21:38 pianolivier 14
Afficher
Samedi 24 septembre 2011 21:37 pianolivier 13
Afficher
Samedi 24 septembre 2011 21:35 pianolivier 12
Afficher
Samedi 24 septembre 2011 21:33 pianolivier 11
Afficher
Samedi 24 septembre 2011 21:32 pianolivier 10
Afficher
Samedi 24 septembre 2011 21:30 pianolivier 9
Afficher
Vendredi 23 septembre 2011 17:53 olinuxx coquilles 8
Afficher
Vendredi 23 septembre 2011 17:44 olinuxx confirmation 7
Afficher
Jeudi 22 septembre 2011 19:59 pianolivier 6
Afficher
Jeudi 22 septembre 2011 19:56 pianolivier 5
Afficher
Jeudi 22 septembre 2011 19:52 pianolivier 4
Afficher
Jeudi 22 septembre 2011 19:35 pianolivier 3
Afficher
Jeudi 22 septembre 2011 18:32 pianolivier 2
Afficher
Jeudi 22 septembre 2011 17:42 pianolivier création de la page 1
Afficher
  • 1
  • 2 (en cours)
  • »