Chargement...
 
Skip to main content

Historique: Portail Système

Aperçu de cette version: 16

(:arrow_left:) Page précédente : Accès temps réel pour les applications






Interruptions matérielles / IRQ

La commande "cat /proc/interrupts" vous donnera la liste des IRQ. Exemple (peu parlant car je n'ai pas lancé la commande de mon PC zic', mais bon ❗
#cat /proc/interrupts
CPU0
0: 4345317 IO-APIC-edge timer
1: 11519 IO-APIC-edge i8042
9: 0 IO-APIC-level acpi
12: 131204 IO-APIC-edge i8042
14: 10137 IO-APIC-edge ide0
15: 38094 IO-APIC-edge ide1
16: 9999 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2
17: 4536 IO-APIC-level eth0
18: 439677 IO-APIC-level nvidia
19: 24415 IO-APIC-level VIA8233

La première colonne indique l'IRQ, la dernière les périphériques correspondants.

IRQ partagées et conflits

Vous veillerez en particulier à ce que la carte son n'ait pas d'IRQ partagée, cela vous évitera craquements et autres désagréments...
Pour changer l'IRQ d'un périphérique :
  • Pour les cartes ISA : "isapnptools". Voir par exemple ici : http://www.trustonme.net/didactels/119.html
  • Certaines cartes (ISA) disposent de "jumpers" permettant cette modification
  • Certains BIOS permettent l'attribution d'IIRQ (aux slots PCI par exemple)
  • Changez le périphérique de slot PCI si votre carte-mère en possède plusieurs !
  • Désactivez/retirez les périphériques inutilisés (réorganisation des IRQ)

Choix des IRQ


Le fil suivant nous indique l'ordre de priorité des IRQ sur une machine non-APIC (à vérifier pour les multiproc) :
 
 0, 1, 8, 9, 10, 11, 12, 13, 14, 15, 3, 4, 5, 6, 7
 
 0 : priorité la plus forte
 7 : priorité la plus faible

Les IRQ 0, 1, 8 étant réservées au système, l'idéal pour votre carte son sera donc l'IRQ 9, 10 ou 11. Ainsi, si votre carte son est sur l'IRQ 11 par exemple, l'idéal sera également qu'aucun périphérique ne soit sur une IRQ plus prioritaire (9 ou 10).

Liens




Périphériques PCI et latency_timer


Pour cette partie, vous aurez besoin de la suite d'outils "pci-utils", disponible pour toutes les distributions.

Présentation


Chaque périphérique PCI possède une valeur de "latency_timer" comprise en 0 et 248 cycles d'horloge du bus. Plus cette valeur est grande, plus le matériel gardera le bus longtemps pour lui. Cela augmentera la largeur de bande passante et le débit pour ce périphérique, mais cette "monopolisation" pourra perturber les autres périphériques PCI.
A contrario, une valeur de "latency_timer" faible indiquera au périphérique qu'il doit cesser ses transmissions si un autre composant à besoin du bus : ceci se traduira par une perte de bande passante importante.

Usage


En changeant la valeur de "latency_timer" pour chaque périphérique, vous pouvez changer leur priorité afin de donner, par exemple, l'avantage à votre carte son !

Utilisez tout d'abord la commande "lspci" pour inspecter les latences PCI de vos dispositifs.
lspci - v


Repérez en particulier les lignes correspondant à votre carte son ("Multimedia audio controller"). Si vous voulez que votre carte son soit le dispositif préféré de PCI, augmentez alors sa latence à au moins 128. Ramenez les valeurs de "latency_timer" de tous autres dispositifs PCI à quelque chose comme 64 ou 32 (sauf peut-être la carte graphique, cf remarque ci-dessous).

➡️ Attention : la commande "setpci" utilisée requiert des valeurs exprimées dans le système hexadécimal (alors que "lspci" vous les affiche en décimal ❗. Vous devrez donc convertir au préalable la valeur de latence souhaitée :

Valeur décimaleValeur hexadécimale
1610
3220
6440
12880
248F8
etc.


Exemple avec une carte son à l'adresse suivante (donnée par lspci) :
0000:00:0d.0 Multimedia audio controller: Cirrus Logic CS 4614/22/24
             [CrystalClear SoundFusion Audio Accelerator] (rev 01)

Pour définir la latence pci de ce matériel au maximum :
setpci -s 0:0d.0 latency_timer=f8


Pour modifier plusieurs périphériques en même temps (ici, ceux du bus 01 à une valeur de 32 cycles) :
setpci -v -d 01:* latency_timer=20


Remarque importante

➡️ Attention : Ne baissez pas trop la valeur de "latency_timer", sous peine de voir certains périphériques ne plus fonctionner ! (elle ne devrait pas être inférieure à la valeur de MIN_GRANT du périphérique considéré. Consultez le fil suivant pour plus d'infos). Si certains de vos périphériques fonctionnent moins bien, remontez leur valeur de "latency_timer". Votre carte graphique aura par exemple du mal à suivre sur certains jeux si vous abaissez trop sa valeur !
Voilà un exemple qui motive le fait qu'on vous conseille tout au long de ce site de monter votre homestudio sur une partition dédiée ...

Liens

Si vous voulez plus d'info :



rtirq


Présentation


Il s'agit "simplement" d'un script permettant de prioriser des IRQ handlers (pour les utilisateurs du groupe "audio"). Le "programme" se compose de 2 fichiers : un script d'initialisation et un fichier de configuration.
Un noyau-RT est évidemment conseillé !

Gentoo

Le plus simple est d'utiliser l'overlay "pro audio production applications" (voir page gentoo)
echo "sys-process/rtirq ~x86" >> /etc/portage/package.keywords
emerge rtirq
rc-update add rtirq default

Pour les autres


L'installation n'est pas trop compliquée ! Vous trouverez l'archive et des instructions (en anglais) ici :
http://lalists.stanford.edu/lau/2005/11/0459.html

Pour résumer, téléchargez l'archive "rtirq-20050914.tar.gz" et décompressez-là :


Placez les 2 fichiers au bon endroit et avec les droits corrects (en root) :
cp rtirq.sh /etc/init.d/rtirq
chmod 0755 /etc/init.d/rtirq

cp rtirq.conf /etc/sysconfig/rtirq
chmod 0644 /etc/sysconfig/rtirq


Intégrez le script dans votre distribution en tant que script d'initialisation (très variable d'une distribution à l'autre)

rc-update add rtirq default (pour Gentoo)
chkconfig --level 5 rtirq on (pour Mandriva. Voir aussi "drakxservice")
chkconfig --add rtirq (pour Redhat)
update-rc.d rtirq defaults (pour Ubuntu, à vérifier ❗
man chkconfig (pour les autres ❗


Le script utilise ensuite les commandes classiques des scripts d'initialisation de votre distribution :
/etc/init.d/rtirq start (pour démarrer)
/etc/init.d/rtirq stop (pour arrêter)
/etc/init.d/rtirq status (devinez ❗


La configuration se fait en modifiant le fichier "/etc/sysconfig/rtirq" (/etc/conf.d/rtirq sous Gentoo).
Il paraît plus prudent de s'assurer au préalable de l'absence de conflit d'IRQ, en utilisant la commande
cat /proc/interrupts


Exemples


Pour les utilisateurs de cartes firewire, voir la page suivante, sur le site du projet Freebob :
http://freebob.sourceforge.net/index.php/System_Configuration_Hints



Das_watchdog (Ze_Chien de garde !)


Présentation

Ce programme n'est pas indispensable, il peut néanmoins s'avérer utile dans certains cas.
Optimiser, donner l'accès temps réels pour une application, c'est bien ... sauf en cas de plantage de celle-ci par exemple !
Das_Watchdog est un programme de surveillance générale pour linux qui tourne en arrière-plan pour s'assurer qu'un processus en temps réel ne va pas bloquer la machine.
Il s'inspire du programme "rt_watchdog" (http://tapas.affenbande.org/?page_id=38) en apportant quelques améliorations :
  • support des noyaux 2.4 et 2.6
  • passage temporaire (et non définitif) en mode "non-temps-réel"
  • ouverture d'une fenêtre "pop-up" d'avertissement

Installation


Elle nécessite les dépendances suivantes :
  • xmessage (intégré à X11)
  • libgtop2

Pour Gentoo, le plus simple est d'utiliser l'overlay "pro audio production applications" (voir page gentoo)
echo "sys-apps/das_watchdog ~x86" >> /etc/portage/package.keywords
emerge das_watchdog
rc-update add das_watchdog default


Pour les autres distributions :
Téléchargez et décompressez la dernière version ici : http://ccrma.stanford.edu/~kjetil/src/
tar -zxvf das_watchdog-x.x.x.tar.gz
make
cp das_watchdog /usr/local/sbin/
echo '/usr/local/sbin/das_watchdog >/dev/null &' >>/etc/rc.sysinit
reboot

Il s'agit, comme pour rtirq, d'un script d'initialisation. L'intégration dans votre sytème dépendra donc encore de votre distribution (voir ci-dessus)

Vous aurez peut-être le message suivant après la compilation :
das_watchdog and test_rt compiled. Now testing IRQ priorities...
./das_watchdog --checkirq

ERROR! The "softirq-timer/0" process has only got priority 1. It should be 99.
Watchdog will probably not work.

Utilisez la commande suivante pour rectifier la priorité de softirq-timer :
chrt -f -p 99 `ps -A |grep softirq-timer/0 |awk '{print $1}'` (pour le 1er processeur)
chrt -f -p 99 `ps -A |grep softirq-timer/1 |awk '{print $1}'` (si vous avez un second processeur)
etc ...


Usage


Quand un programme bloque votre machine, "das_watchdog" bascule temporairement (pendant 8 secondes) les processus "temps-réels" en mode "non-temps-réel". Un message d'avertissement s'affiche à l'écran pour vous prévenir.
Pour tester das-watchdog, l'archive vous fourni un programme de test, "test_rt". Compilez-le ("make"), fermez toutes vos tâches importantes en cours et lancez-le : il freeze votre machine et vous devriez donc voir apparaître un message de das_watchdog:

Image


Liens

http://ccrma.stanford.edu/~kjetil/src/
http://linux.softpedia.com/get/Multimedia/Audio/Das-Watchdog-10825.shtml



Gestion des priorités

➡️ A venir !
L'objectif est d'expliquer comment utiliser les différents outils (qjackctl, rtirq, commande "chrt", etc.) pour obtenir quelque chose du type:
99 System timer IRQ
98 RTC IRQ
 
95 
. Midi threads of softsynths/midi sequencers
85
 
82 Soundcard IRQ
 
70 Jackd main loop
 
60 
. Other IRQ handlers (disk, network, USB, GFX)
40

inspiré de http://tapas.affenbande.org/?page_id=40



rt-exec

rt-exec est un utilitaire pour tester les capacités "temps-réel" d'un ordinateur.
Pour plus d'infos (installation, utilisation), un fichier "read-me" est disponible ici (en anglais) : ftp://ftp.compro.net/public/rt-exec/README

Les utilisateurs de Gentoo pourront utiliser l'overlay "pro audio production applications" pour l'installer. Pour les autres, le programme peut-être téléchargé ici : ftp://ftp.compro.net/public/rt-exec



Autres optimisations


Pour finir, voici enfin quelques pistes que vous pouvez encore explorer (outre les optimisations de la page Les discs durs et hdparm :
  • Méfiez-vous des tâches d'administration automatiques effectuées en arrière plan (cron, messagerie).
  • Désactivez les services inutiles. La gestion des services étant très différente d'une distribution à l'autre, consultez la documentation de votre distribution. Certaines proposent des outils graphiques ("drakxservice" sous Mandriva par exemple), pour d'autres, il faudra faire ça "à l'ancienne" (commandes "rc-status" et "rc-update" sous Gentoo, etc). N'oubliez pas enfin que certains services dépendent d'autres services !
  • Choisissez un desktop léger pour économiser des ressources.



(:arrow_left:) Page précédente : Accès temps réel pour les applications


Historique

Avancé
Information Version
Dimanche 19 décembre 2010 00:05 olinuxx BOX 59
Afficher
Dimanche 19 décembre 2010 00:03 olinuxx BOX 58
Afficher
Jeudi 16 décembre 2010 07:44 olinuxx rédaction 57
Afficher
Jeudi 16 décembre 2010 07:40 olinuxx liens morts 56
Afficher
Jeudi 16 décembre 2010 07:32 olinuxx liens morts 55
Afficher
Jeudi 16 décembre 2010 07:23 olinuxx 54
Afficher
Jeudi 16 décembre 2010 07:22 olinuxx 53
Afficher
Jeudi 16 décembre 2010 07:16 olinuxx 52
Afficher
Jeudi 16 décembre 2010 07:14 olinuxx 51
Afficher
Jeudi 16 décembre 2010 07:03 olinuxx 50
Afficher
Jeudi 16 décembre 2010 06:58 olinuxx déplacement vieille info vers ((applis rt oldscool)) 49
Afficher
Jeudi 16 décembre 2010 06:57 olinuxx + Utilisations avancées 48
Afficher
Jeudi 16 décembre 2010 06:54 olinuxx 47
Afficher
Lundi 06 décembre 2010 11:46 olinuxx 46
Afficher
Lundi 06 décembre 2010 11:14 olinuxx rédaction 45
Afficher
Lundi 06 décembre 2010 11:00 olinuxx rédaction 44
Afficher
Lundi 06 décembre 2010 10:50 olinuxx pose d'infos provenant de ((optimisations utilisations avancées)) 43
Afficher
Lundi 06 décembre 2010 10:49 olinuxx pose d'infos provenant de ((optimisations linux2.6)) 42
Afficher
Lundi 06 décembre 2010 10:31 olinuxx + applis rt 41
Afficher
Lundi 06 décembre 2010 09:49 olinuxx pose d'infos provenant de ((optimisation linux2.6)) 40
Afficher
Lundi 06 décembre 2010 09:47 olinuxx pose d'infos provenant de ((optimisations linux2.6)) 39
Afficher
Lundi 06 décembre 2010 09:45 olinuxx pose d'infos provenant de ((optimisation linux2.6)) 38
Afficher
Lundi 06 décembre 2010 09:17 olinuxx 37
Afficher
Lundi 06 décembre 2010 09:16 olinuxx 36
Afficher
Lundi 06 décembre 2010 09:15 olinuxx 35
Afficher
Lundi 06 décembre 2010 09:15 olinuxx test BOX 34
Afficher
Lundi 06 décembre 2010 09:06 olinuxx préparation BOXification 33
Afficher
Lundi 06 décembre 2010 08:58 olinuxx déplacement en page dédiée 32
Afficher
Lundi 06 décembre 2010 08:46 olinuxx déplacement infos dans ((gestion des irq)) 31
Afficher
Lundi 06 décembre 2010 08:41 olinuxx déplacement latency timer en page dédiée 30
Afficher
Lundi 06 décembre 2010 08:40 olinuxx 29
Afficher
Lundi 06 décembre 2010 08:40 olinuxx 28
Afficher
Lundi 06 décembre 2010 08:40 olinuxx 27
Afficher
Lundi 06 décembre 2010 08:38 olinuxx mise en page 26
Afficher
Lundi 06 décembre 2010 07:44 olinuxx déplacement info IRQ en page dédiée 25
Afficher
Lundi 06 décembre 2010 07:30 olinuxx déplacement infos ((das_watchdog)) 24
Afficher
Mardi 23 février 2010 10:36 yanshee 23
Afficher
Jeudi 17 décembre 2009 16:02 olinuxx 22
Afficher
Mercredi 29 avril 2009 23:33 Ejis 21
Afficher
Mercredi 09 mai 2007 01:51 Mysth-R update-rc.d rtirq defaults (pour Ubuntu) OK 20
Afficher
Jeudi 22 mars 2007 23:23 Trinine MAJ rtirq 19
Afficher
Mercredi 14 mars 2007 19:27 Trinine + lien pour rtirq 18
Afficher
Jeudi 28 décembre 2006 20:22 Trinine (qques modifs rtirq) 17
Afficher
Jeudi 21 décembre 2006 16:57 Trinine Liens page précédente/suivante 16
Afficher
Vendredi 15 septembre 2006 19:02 Trinine 15
Afficher
Samedi 05 août 2006 14:20 Trinine 14
Afficher
Dimanche 16 juillet 2006 16:48 Trinine 13
Afficher
Vendredi 07 juillet 2006 19:17 Trinine 12
Afficher
Vendredi 07 juillet 2006 19:11 Trinine 11
Afficher
Vendredi 07 juillet 2006 18:24 Trinine 10
Afficher