Chargement...
 
Skip to main content

Historique: rtirq

Aperçu de cette version: 30



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

Image



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

conflit d'interet :
Oberservons une minute l'IRQ n°16. 2 modules se le partagent : firewire_ohci et uhci_hcd:usb3.
Pour éviter les conflit d'interet, il vaut mieux déconnecter tout disque-dur et autre périphérique au-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)
Copy to clipboard
~~blue:$~~ lsub Bus 001 Device 00X: un disque dur Bus 002 Device 00X: une clef wifi Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub (rien) ...

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 :
Copy to clipboard
~~blue:$~~ lsmod

ou d'en apprendre plus sur vos ports pci :
Copy to clipboard
~~blue:$~~ 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 : /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, 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 ailleur :
    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'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).
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 redemarrer le service à la main (voir le restart plus haut) ou créer une règle udev personnalisée.

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


Liens


En savoir plus :


[+]

Historique

Avancé
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)
  • »