lundi 28 mai 2012

Diminuer, voir éliminer les XRUNS de jack sur votre Ubuntu


Pour accéder à la Liste des articles de ce blog c'est par ici

Bonjour,

aujourd'hui nous allons regarder comment diminuer, voir éliminer drastiquement les XRUNS (désynchronisation) du serveur Jack. Cet article suppose que vous avez installez le noyau lowlatency sur Ubuntu 12.04.

Les XRUNS sont géneralement le résultat des nombreux appels des process et daemons qui tournent sur Ubuntu et qui font de petits appels récurrents au noyau. Cela peut aussi être le résultat d'un CPU surchargé, ou l'utilisation de ressources disques ...

Voici une page qui tente de définir l'ordinateur idéal pour faire de l'audio. Cette page donnent des pistes sur les problèmes que l'on rencontre quand on fait de l'audio avec son ordinateur (tous systèmes confondus: Linux - OS/X - Windows).

Réglages du serveur Jack

Dans un premier temps, il est conseillé de lire l'article sur l'installation et le paramétrage du serveur de son jack.

Faites plusieurs tests en influant sur la période jusqu'à ce que vous obteniez un résultat sans trop de désynchronisation (XRUNS) (voir les réglages dans l'application qjackctl). Pour les cartes audio qui ne sont pas ASIO (faible latence), il ne faut espérer de miracle. Pour les autres, la latence devrait être inférieure à 10ms en général.

Une fois jack paramétré, vous allez pouvoir améliorer les performances de votre serveur jack en suivant les étapes ci-dessous. 

Lorsque que vous aurez optimisé votre Ubuntu 12.04 pour l'audio, vous pourrez éventuellement revoir la période de votre serveur jack à la baisse et refaire des tests.


Gain de performances CPU


Nous allons faire du ménage dans les processus que vous avez en mémoire afin d'optimiser les performances de votre CPU et du kernel low latency (noyau faible latence).

L'une des optimisations les plus évidentes est de couper le réseau (surtout le WIFI très consommateur). Mais on peut ne pas s'arrêter là: webcam, bluetooth, imprimantes, ... peuvent également être coupés et ainsi ne plus solliciter le noyau.

Je vous propose ici deux scripts qui permettent de faire tout cela et quelques astuces en plus. Ces scripts sont directement adaptés d'une page complète dédiée à ce sujet sur wiki.linuxmusicians.com.

Editer ces fichiers dans le répertoire de votre choix:
~$ gedit optimize_env_for_audio.sh restore_env_after_audio.sh &

Le fichier optimize_env_for_audio.sh :
#!/bin/sh

sudo modprobe -r ppdev # Pas de ports parallèles sur ma machine
sudo modprobe -r lp # Pas besoin d'imprimantes pour faire de la musique
sudo modprobe -r uvcvideo # Pas besoin de webcam non plus
sudo modprobe -r videodev # idem pour V4L2 (Vidéo for linux 2)
sudo modprobe -r wl # Wireless driver (son nom peut varier selon le chipset)
#sudo modprobe -r btusb # Pas besoin de Bluetooth USB non plus (décommentez si nécessaire) 


sudo service bluetooth stop # Stoppe Bluetooth process
sudo service cups stop # Stoppe cups qui gére l'imprimante 
sudo service network-manager stop # Stoppe le réseau
sudo /etc/init.d/ondemand stop # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp stop # Pas besoin de la température du CPU (Décommentez si nécessaire)
sudo killall /sbin/wpa_supplicant # Stoppe le service WPA pour le réseau wifi

sudo modprobe snd-hrtimer # Charge le module de haute résolution du temps

echo Changing CPU Frequence to performance.
sudo cpufreq-selector -g performance
Le fichier restore_env_after_audio.sh :
#!/bin/sh

echo Changing CPU Frequence to powersave.
sudo cpufreq-selector -g powersave

sudo modprobe ppdev # Démarre le module kernel de ports parallèles
sudo modprobe lp # Démarre le module kernel imprimante
sudo modprobe uvcvideo # Démarre le module kernel webcam
sudo modprobe videodev # Démarre le module kernel V4L2
sudo modprobe wl # Démarre le module kernel WIFI (le nom peut varier selon votre chipset)
#sudo modprobe btusb # Démarre le module kernel Bluetooth USB (Décommentez si nécessaire)

sudo service bluetooth start  # Démarre le Bluetooth 
sudo service cups start # Démarre cups, (pour l'imprimante)
sudo service network-manager start # Démarre le réseau
sudo /etc/init.d/ondemand start # Prevent this script from running so my CPU won't use the ondemand governor
#sudo service hddtemp start # Démarre hddtemp pour surveiller la température du CPU (décommentez si nécessaire)
sudo /sbin/wpa_supplicant -B -P /run/sendsigs.omit.d/wpasupplicant.pid -u -s -O /var/run/wpa_supplicant & # Démarre WPA service pour le wifi

N'oubliez pas de donner les droits en exécution sur ces deux fichiers.
~$ chmod 755 optimize_env_for_audio.sh restore_env_after_audio.sh

Vous pouvez maintenant exécuter la commande suivante lorsque vous démarrez une session audio
~$ ./optimize_env_for_audio.sh
et restaurer votre environnement une fois votre session audio terminée:
~$ ./restore_env_after_audio.sh
Vous aurez à entrer votre mot de passe root puisque la commande sudo est utilisé dans les deux scripts.

Pour connaître les services qui tournent sur votre ordinateur et qui ont un PID:
~$ initctl list | sort | grep process
En fonction de la liste que vous obtenez, vous pouvez ajouter des commandes de démarrage ou d'arrêt de certains services dans les scripts ci-dessus. Renseignez-vous sur l'utilité de chaque service que vous voulez démarrer ou arrêter afin de garder le contrôle sur ce que vous faîtes.
Ou alors, vous pouvez également utiliser une application graphique qui vous donnera plus d'infos sur les services activés et leur état. Par exemple, Boot Up Manager (bum) dans le dépôt Universe:
~$ sudo apt-get install bum
~$ sudo bum
Une aide appréciable pour scripter le démarrage et l'arrêt des services Ubuntu.


Optimisation des accès disques


Type de système de fichiers à éviter


Il est conseillé d'éviter les systèmes de fichiers suivants: reiserfs et fuseblk fs qui ne sont pas adaptés aux applications audio.

Système de fichier en RAM et partition spécifique pour l'audio


Nous allons optimiser votre système de fichiers. Si vous avez beaucoup de RAM (ex: 4 Go+), nous allons pouvoir charger en mémoire une partie du système de fichier: notamment /tmp et /var/log. On ne mettra pas /var/tmp en RAM car il est utilisé pour stocker des fichiers pouvant être accédés après un reboot.

L'inconvénient de monter /var/log en mémoire RAM est qu'au redémarrage de la machine, vous perdrez toutes les logs mais comme on a rarement besoin de les consulter dans une utilisation desktop, cela n'est pas pénalisant.

On créera une partition pour y mettre les fichiers projets de vos DAWs favoris sur laquelle on optimisera les accès grâce à trois options:

- noatime : optimise l'écriture en inhibant la modification de la date d'accès des fichiers
- nodiratime : pareil que noatime mais pour les répertoires.
- data=writeback : optimise l'écriture au risque de quelques pertes en cas d'arrêt brutal du système. Mais cela améliore les performances d'écritures de façon significatives ! (source linuxmao.org)

Il n'est pas conseillé d'utiliser des disques durs USB si vous utilisez une carte son USB. Cela pourrait détériorer les performances du système par une sollicitation trop forte des ressources USBs. Préférez donc une partition sur un disque dur interne de votre ordinateur. Si vous achetez un disque dur interne exprès, préférez un 7200 rpm ou mieux un 10 000 rpm.

Avant de modifier votre fichier de configuration, je vous conseille d'en faire une sauvegarde.

Exemple de fichier /etc/fstab modifié:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                

# / was on /dev/sda5 during installation
UUID=b10c82d8-e0f1-470f-b0dd-a2796d762414 /               ext4    errors=remount-ro 0       1

# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-ef3d0be52824 /home           ext4    defaults        0       2 
 
# /home was on /dev/sda7 during installation
UUID=297c3104-d3d5-48be-a511-dedadada5166 /audio           ext4    defaults,noatime,nodiratime,data=writeback        0       2

# swap was on /dev/sda6 during installation
UUID=8d053da8-827e-47d0-ae8a-0a70b0b77aaf none            swap    sw              0       0


# tmpfs RAM disk
tmpfs /tmp tmpfs defaults,noatime,nodiratime,size=512M 0 0
tmpfs /var/log tmpfs defaults,noatime,nodiratime,size=256M 0 0
Pour éditer le fichier /etc/fstab:
~$ sudo gedit /etc/fstab

Déclenchement du swap


Afin de limiter le swap sur votre machine, on va baisser le seuil de déclenchement de l'utilisation du swap à 10% de mémoire restante inutilisée. Pour cela, on modifiera /etc/sysctl.conf afin que la variable vm.swappiness soit présente et prenne la valeur suivante:
vm.swappiness = 10
Pour vérifier votre paramétrage:
~$ cat /proc/sys/vm/swappiness

Paramètrage des IRQs realtime

~$ sudo apt-get install rtirq-init 

Si la carte son faible latence est une usb alors éditer le fichier /etc/default/rtirq et enlever snd à la variable RTIRQ_NAME_LIST.

RTIRQ_NAME_LIST="rtc usb i8042" 

puis redémarrez:

~$ sudo /etc/init.d/rtirq restart

Package consommateur


On prendra soin de supprimer le package apt-xapian-index utilisé par synaptic.

pour avoir un descriptif de ce package:
~$ apt-cache show apt-xapian-index
Pour le supprimer:
~$ sudo apt-get remove apt-xapian-index

Inhiber la mise en veille (pour les portables)

Afin que votre portable ne se mettent pas en veille pendant votre session audio, modifiez les paramètres systèmes de l'icône énergie et indiquez que vous ne voulez pas mettre en veille lorsque le câble d'alimentation est branché.

Par exemple:

 

Inhiber la mise en veille de l'écran

Pour inhiber la mise en veille de l'écran, il faut aller dans paramètres systèmes et cliquer sur l'icône luminosité et verrouillage. Par exemple:



Conclusion


Le résultat est variable selon les configurations mais il est possible d'atteindre huit pistes en écriture (même avec un DD 5400 rpm):
- Processeur : Intel(R) Core(TM) i3 CPU       M 370  @ 2.40GHz
- Disque dur à 5400 rpm (courant sur les ordinateurs portables) pour /home et /audio
- SSD 64 GO pour la partition root (disque système)
- 8 GO de RAM
- buffers : 128
- DAW : ardour5
- MAudio/Mtrack sur 2 pistes (Basse + effets, Chant + effets)
- Audacious pour les 6 autres pistes.

Vous trouverez d'autres astuces pour l'audio et la musique sur Ubuntu par ici.

Aucun commentaire:

Enregistrer un commentaire