Nous expliquons ici comment obtenir le droit d'utiliser des applications en mode temps réel grâce à P.A.M. sur un système GNU/Linux. Elle s'applique à la plupart des distributions actuelles, qu'elles aient un noyau standard ou un noyau temps-réel.
Si vous utilisez LibraZiK ou Ubuntu Studio ces réglages sont inutiles. Les développeurs se sont occupés de les faire pour vous.
Table des matières
T' as pas configuré P.A.M. ?
T' as pas la prio temps-réel !
Présentation
Le noyau linux standard offre la possibilité de donner à certains logiciels un accès privilégié sur les ressources de l'ordinateur avec une priorité maximale sur les autres. Ces logiciels pourront être plus proches du temps-réel et seront moins gênés par les autres.C'est ce qui nous intéresse car, en MAO, nous n'avons pas forcément envie qu'une pub en flash dans un navigateur internet nous bloque un enregistrement de 4 pistes !
Pour cela, deux configurations sont nécessaires :
- ajouter le compte utilisé pour la MAO au groupe audio, ce qui se fait via le module P.A.M. (Pluggable Authentication Module)
- donner le maximum de ressources à ce groupe, en réglant la paramètres du noyau memlock (quantité de mémoire vive qu'une application peut se réserver pour elle seule) et rtprio (priorité maximum accordée à un programme pour accéder aux ressources du processeur)
Ne vous inquiétez pas quant aux détails, le procédé est largement rodé et nous avons les réglages optimums qui conviennent à tous !
Régler PAM en trois étapes
1. Faire partie du groupe d'utilisateurs audio
note
Avec les outils d'administration de votre système
Par exemple pour le bureau Gnome (et donc Ubuntu entre autres) :- Allez dans Système -> Administration -> Utilisateurs et groupes.
- Cliquez sur l'icône en forme de clé. On vous demande votre mot de passe administrateur, entrez-le et validez.
- Cliquez sur Gérer les groupes.
- Sélectionnez le groupe audio et cliquez sur Propriétés.
- Cliquez sur la check-box devant votre nom d'utilisateur, validez (sauf si c'est déjà le cas) et fermez la fenêtre.
En ligne de commande
Vérifiez d'abord que votre utilisateur n'est pas déjà dans le groupe visé en émettant cette commande dans un terminal :groups
Cette commande liste les groupes Linux dans lesquels se trouve l'utilisateur qui l'a lancée. Si audio ou jackuser n'apparaissent pas, vous n'y êtes pas !
Il faut les droits d'administration pour éditer ce réglage, on utilisera donc la super-commande sudo.
sudo gpasswd -a ''mon_utilisateur'' audio
n'oubliez pas bien sûr de remplacer mon_utilisateur par le nom de votre utilisateur !
Il est possible de vérifier que vous êtes bien dans le groupe audio en utilisant cette ligne de code :
fgrep -ie 'audio' /etc/group
2. Donner l'accès temps-réel au groupe d'utilisateurs audio
note
Sous certaines distributions telles que Debian ou dérivées (Ubuntu,...), ce qui suit peut être fait automatiquement en installant JACK par le terminal ou, par la suite, à l'aide la commande suivante avec les droits du super-utilisateur :
dpkg-reconfigure jackd2
Ce qui fait apparaître la question "Faut-il activer la gestion des priorités de processus en temps réel ?" à laquelle il faudra répondre "oui".
Localiser le fichier de configuration de PAM :
Selon votre distribution le fichier à éditer aura un nom différent, essayez dans l'ordre suivant :
- /etc/security/limits.d/audio.conf : spécifique pour JACK, en général disponible sur système à base de Debian ou Ubuntu
- /etc/security/limits.d/99-jack.conf : plutôt sous Fedora
- /etc/security/limits.conf : par défaut et historique il peut coexister avec l'un des fichiers ci-dessus, dans ce cas il ne sert pas
Il peut arriver qu'il se trouve ailleurs. Il va donc falloir le localiser, par exemple dans un terminal :
su -c "find /etc/ -name limits.conf"
grep -lir rtprio /etc/security/limits.*
Éditer le fichier de configuration :
Utilisez votre éditeur de texte favori pour modifier le contenu du fichier. Votre éditeur de texte favori peut être gedit si vous utilisez le gestionnaire de bureau gnome, kwrite sous KDE, nano sur un terminal,... On utilisera gedit dans notre cas. Il nous faut ici aussi les droits d'administration :
su -c "gedit /etc/security/limits.conf"
remplacez bien sûr /etc/security/limits.conf par le fichier trouvé à l'étape ci-dessus.
Vérifiez que les lignes suivantes se trouvent dans le fichier et, si elles n'y sont pas, ajoutez les :
# Support Temps réel pour le groupe audio @audio - rtprio 90 @audio - memlock unlimited
Vérifiez, si ces lignes sont déjà présentes, qu'elles ne commencent pas par un dièse (#) les rendant inopérantes.
Par contre le paramètre suivant est inutile :
@audio - nice -15
Vous pouvez le commenter en mettant un # devant :
# @audio - nice -15
Enregistrez et fermez le fichier.
3. Relancez la session
Pour finir, déconnectez-vous de votre session puis reconnectez-vous pour que les changements prennent effet.Et hop, à table ! C'est prêt !
Pour vérifier
ulimit -l -r
Qui vous donnera les valeurs enregistrées :
max locked memory (kbytes, -l) unlimited real-time priority (-r) 90
Détails du fichier de configuration
[+]Liens et commentaires
Avant tout, si vous rencontrez le moindre soucis lorsque vous suivez cette procédure, vous avez 2 choses à faire :
- essayer de trouver une résolution en consultant la FAQ sur Jack,
- venir nous en parler dans le forum dédié aux O.S. : "Les distributions et les noyaux",
Si la manipulation a fonctionné, vous pouvez à présent retourner à la page d'où vous venez. Si vous êtes tombé sur cette page par hasard, vous devriez aller faire un tour sur la page de configuration de jack, pour régler celui-ci au mieux et en concordance avec la manipulation que vous venez d'effectuer ici.
Si vous possédez un noyau temps-réel il vous faudra aussi vous pencher sur la gestion des priorités des processus IRQ.
Si PAM n'est pas installé, allez voir les alternatives sur la page Temps-réel pour les applications.
Si JACK fonctionne déjà et que vous vous intéressez à rendre votre système encore plus temps-réel, continuez à lire.
Pour aller plus loin
Avec rlimits et PAM, les applications accèdent plus rapidement au noyau ce qui permet d'obtenir des temps de latence très faibles (quelques dizaines de millisecondes) largement suffisants pour la plupart des utilisations en MAO. Cependant si vous avez besoin d'un système encore plus Temps-réel les étapes suivantes sont :
Ceci vous permettra à terme d'obtenir des temps de latence plus bas encore ! (quelques millisecondes)
- Le sujet RT scheduling sur le site de JACK : http://jackaudio.org/faq/linux_rt_config.html
[+]