Historique: Portail Système
Aperçu de cette version: 29
(:arrow_left:) Page précédente : applis RT
Page Suivante : Retour section Optimisation Linux 2.6 ➡️
Table des matières
Interruptions matérielles / IRQ
➡️ IRQPé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.
Utilisation
En changeant la valeur de latency_timer pour chaque périphérique, vous pouvez changer leurs priorités 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.
Copy to clipboard
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écimale | Valeur hexadécimale |
| 16 | 10 |
| 32 | 20 |
| 64 | 40 |
| 128 | 80 |
| 248 | F8 |
| 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 :
Copy to clipboard
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) :
Copy to clipboard
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 :- man lspci
- man setpci
- La page latence ici même !
- La page "Découvrez les ressources de votre machine" du site de LEA.
- http://www.reric.net/linux/pci_latency.html (en anglais)
- http://www-128.ibm.com/developerworks/library/l-hw2.html#N100E6 (en anglais)
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 avec le patch d'Ingo Molnar est indispensable (usage de threads pour la gestion des IRQ), voir la page Compiler un noyau 2.6RT.
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
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 ou mieux ici : http://www.rncbc.org/jack/ (en bas de page) pour la toute dernière version.
Pour résumer, téléchargez l'archive "rtirq-20050914.tar.gz" et décompressez-là :
wget http://lalists.stanford.edu/lau/2005/11/att-0459/rtirq-20050914.tar.gz
tar -zxvf rtirq-20050914.tar.gz
tar -zxvf rtirq-20050914.tar.gz
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
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)
man chkconfig (pour les autres ❗
chkconfig --level 5 rtirq on (pour Mandriva. Voir aussi "drakxservice")
chkconfig --add rtirq (pour Redhat)
update-rc.d rtirq defaults (pour Ubuntu)
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 ❗
/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) qui est plutôt bien documenté. Il est important de s'assurer au préalable de l'absence de conflit d'IRQ, en particulier pour les périphériques listés dans "RTIRQ_NAME_LIST", 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
Vous trouverez ici comment régler les priorités afin de favoriser votre carte FireWire : http://freebob.sourceforge.net/index.php/IRQ_Threading_and_Priorities
Voir aussi : http://alsa.opensrc.org/Rtirq
Das_watchdog (Ze_Chien de garde !)
➡️ das_watchdog
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 : applis RT
Page Suivante : Retour section Optimisation Linux 2.6 ➡️