Chargement...
 
Skip to main content

Historique: Paramétrage d'une station audio-numérique professionnelle

Aperçu de cette version: 47


 attention
Page en cours d'écriture. Pour venir discuter des cette page, rejoignez le fil de discussion suivant : forumthread120235



Ce document détaille le paramétrage avancé d'une station audio professionnelle sous Linux.
Bien que les concepts soient exposés de manière accessible, l'objectif est d'aller au-delà de la configuration de base de PipeWire (déjà traités dans Configurer LinuxMint Zena pour la MAO) pour optimiser les performances temps réel.
L'accent est mis sur l'affinité des processus, spécifiquement l'attribution dédiée de cœurs de processeur (CPU) aux flux audio.

Faisant suite aux discussions techniques préalables, Jack et Pipewire - Cohabitation (119410 ou 120210), cet article répond à deux problématiques d'optimisation matérielle :
  1. Est-il possible d'allouer des cœurs de CPU à des fonctions spécifiques ?
  2. Peut-on assigner exclusivement certains cœurs aux applications MAO (telles que Ardour, Muse, Qtractor) ?
La réponse à ces deux interrogations est affirmative. La suite de ce guide démontre comment isoler les tâches audio sur des cœurs dédiés pour garantir une stabilité maximale et éviter les interférences avec les processus système.

Le matériel dont nous disposons

Le matériel dont nous disposons est le suivant :
  1. PC de bureau, processeur Intel Core i7-9700T cadencé à 2 GHz, 8 cœurs physique, 16 Gb de RAM, disque SSD,
  2. Carte son externe Behringer UMC1820, 8 entrées, 96 kHZ (testé aussi sur une UMC 404HD, 4 entrées, 192 kHz )
  3. OS MxLinux 25.1 basé sur Debian Trixie, noyau Liquorix 6.15.2-1 installé.

Testé sur système Mx25.1 Xfce (Debian 13.3) noyau 6.19.11-2-liquorix, ordinateur portable Thinkpad processeur quad core 11th Gen Intel Core i7-1165G7.

Préambule : optimisation de la configuration audio : Enregistrement vs Post-production


La minimisation de la latence est impérative lors des phases d'enregistrement, spécifiquement lorsque vous devez vous synchroniser avec des pistes existantes (motifs rythmiques, bases musicales). Dans ce scénario de monitoring en temps réel, une latence élevée compromettrait la précision rythmique et la justesse de la prise.

Une fois les prises enregistrées, le flux de travail bascule vers la post-production (mixage, insertion d'effets et de greffons). Il est alors recommandé d'augmenter la taille du tampon (buffer size) à 128 ou 256 échantillons (à 48 kHz), offrant une latence respective d'environ 2,6 ms et 5,3 ms ou plus encore 20 ms. Cette configuration accroît la marge de calcul du processeur, éliminant ainsi les risques de XRUN (dépassements de tampon) durant le mixage. Même en cas d'instabilité résiduelle (Xrun) lors de la lecture en temps réel, celle-ci n'affectera pas l'intégrité du fichier final lors du rendu (export), le calcul s'effectuant alors hors temps réel.

Quelques considérations préliminaires concernant la carte son


Concernant l'interface audio, il est inadéquat de vouloir absolument baser la configuration du système PC sur la résolution native de 24 bits/96 kHz spécifiée par le constructeur. Ce paramètre reflète uniquement les capacités de traitement interne du matériel, ex : UMC 1820, et n'établit aucune corrélation directe avec les performances d'échantillonnage exploitables par le système hôte c'est-à-dire votre PC.

Cela est d'autant plus pertinent que ce périphérique agit principalement comme un convertisseur transparent et un préamplificateur en entrée. Sa fonction n'est pas de traiter ou de modifier la résolution du flux, mais de transcrire fidèlement le signal analogique vers le domaine numérique (USB) selon le format demandé par l'hôte. La conversion Analogique/Numérique s'adapte donc dynamiquement à la fréquence d'échantillonnage définie par le PC, indépendamment de sa capacité maximale interne.

Prérequis et outils de diagnostic


Pour suivre ce tutoriel et analyser les performances du système, les utilitaires suivants sont requis :

  • Éditeur de texte: Pour la modification des fichiers de configuration.
  • pw-top : Outil de supervision dédié à PipeWire, permettant d'inspecter en temps réel les nœuds audio, les débits et les états de flux.
  • htop : Moniteur de processus interactif pour visualiser la charge individuelle de chaque cœur du processeur et identifier les goulots d'étranglement lors du traitement audio.
  • Cable : permettant de modifier le quantum (taille du tampon) et d'ajuster la résolution (fréquence d'échantillonnage) du système hôte.
  • Raysession Interface graphique de routage permettant de reconfigurer la topologie audio
  • Ardour : Station de travail audio numérique (DAW) utilisée comme charge de travail de référence pour évaluer la stabilité du système, la latence effective et le comportement global après l'application des réglages.

Évaluation des cœurs CPU à votre disposition

Une note technique : Un processeur à 8 cœurs physiques dispose de 8 unités de calcul matériel indépendantes, offrant une puissance brute élevée et une latence prévisible. Il est optimisé pour les charges de travail parallélisées intensives (rendu 3D, encodage vidéo) ou les tâches critiques en temps réel (audio professionnel, jeux).

Un processeur à 4 cœurs physiques avec hyper-threading (8 threads) simule 8 cœurs logiques. Chaque cœur physique exécute deux threads en partageant ses ressources (cache, bus). Cette technologie améliore le débit global en exploitant les cycles d'inactivité, mais ne double pas la puissance. Elle est bénéfique pour le multitâche et les applications bien parallélisées, mais peut être contre-productive pour les tâches saturant les unités d'exécution.

Le choix dépend donc de l'application : cœurs physiques pour la performance brute et la stabilité, hyper-threading pour une meilleure concurrence et une utilisation optimisée des ressources sous charge variée.

Cependant, avant tout remplacement matériel, Linux permet d'optimiser la configuration existante via deux paramétrages clés : l'isolation des cœurs CPU (via isolcpus ou nohz_full) pour réserver des cœurs au traitement audio, et la gestion des priorités de processus et d'interruptions (via systemd, taskset, irqbalance ou rtirq) pour minimiser la latence et les interférences.
Pour connaître quel est le type de CPU que votre machine possède :
Copy to clipboard
lscpu | grep -E "Core|Thread|CPU\(s\)"

Si la réponse est :
Copy to clipboard
Nom de modèle : Intel(R) Core(TM) i7-9700T CPU @ 2.00GHz Thread(s) par cœur : 1 multiplication des MHz du/des CPU(s) : 100%

Vous disposez d'un CPU à 8 coeurs physiques : thread par coeur 1
Si vous obtenez :
Copy to clipboard
Nom de modèle : Intel(R) Core(TM) i7-4770K CPU @ 3.50 GHz Thread(s) par coeur : 2 multiplication des MHz du/des CPU(s) : 107%

Vous disposez d'un CPU à 4 cœurs physiques : 2 thread par cœur

Procédons.

Pour cela, il suffit d'installer (s'il ne l'est pas), puis d'exécuter htop dans un terminal

Copy to clipboard
sudo apt install htop # et pour l'exécution dans un terminal htop


Et vous obtenez quelque chose comme cela. Entouré de rouge la partie qui nous intéresse :
Htop

On peut observer deux choses : la première est que mon CPU dispose de 8 cœurs numéroté de 0 à 7, et que les zones 0 et 5, 6,7 sont au repos et que celles qui sont actives correspondent à mon navigateur web, gimp et kate. Comment le sait on ? Ce sont les logiciels que j'utilise présentement pour écrire cet article.
Concernant Pipewire, la tentation est grande de se dire qu'il serait judicieux d'attribuer 4 cœurs à pipewire. Oui... mais non. Après plusieurs essais 1 seul cœur suffit pour ma machine car il n'est jamais saturé.
Donc, je vais paramétrer le chargement de mon noyau pour qu'il réserve le cœur (physique) 1 que je vais attribuer, par la suite, à pipewire .
Copy to clipboard
sudo votre-éditeur-de-texte-préféré /etc/default/grub

et remplacer la ligne suivante :
Copy to clipboard
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs"

par celle-ci
Copy to clipboard
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs isolcpus=1 nohz_full=1 rcu_nocbs=1"

Après l'enregistrement du fichier grub, ne pas oublier de faire :
Copy to clipboard
sudo update-grub

Dans le cas d'un processeur hyper-threading, on ne touche jamais aux Threads (0, 1, 2, 3) qui sont réservés au système. Pour l'audio, il faut réserver les CPU (4 5 6 7)
Donc pour pipewire :
Copy to clipboard
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs isolcpus=4 nohz_full=4 rcu_nocbs=4"


Pourquoi ne pas réserver le processeur 0 dans le cas des 8 coeurs physique ? Parce qu'il est préférable de laisser la machine choisir le premier cœur comme elle l'entend, notamment lors du boot.

Pour la signification de -isolcpus=0-2 nohz_full=0-2 rcu_nocbs=0-2, voir la note en bas de page

Il est judicieux après le grub-update de redémarrer l'ordinateur. Relancez htop et vous verrez que le coeur 0 ou 0,1,2 sont inutilisés. C'est le cas pour moi avec le coeur 0 que je vais attribuer à pipewire.(voir l'image plus haut).

Après cela, on suppose que pipewire est déjà configuré comme décris dans Configurer LinuxMint Zena... (voir plus haut)
Éditez le fichier suivant :
Copy to clipboard
votre-éditeur-de-texte-préféré/home/synth/.config/pipewire/pipewire.conf.d/audio-low-latency.conf

et ajoutez les lignes suivantes à la fin du fichier :

Copy to clipboard
#Configuration spécifique au thread de traitement audio thread.name = "audio-thread" thread.priority = 95 # Priorité temps réel élevée thread.cpu-affinity = [0] # Force l'exécution sur le ou les cœurs isolés

ou thread.cpu-affinity = [ 0,1,2 ] selon le cas un ou trois cœurs. (A nouveau, il s'avère que pour ma part un seul cœur suffit).

Maintenant, il faut surcharger les fichiers systemd qui concernent pipewire et wireplumber pour forcer pipewire à utiliser le cœur que nous lui avons réservé. Créons dans le .config des dossiers spécifiques :
Copy to clipboard
mkdir -p ~/.config/systemd/user/pipewire.service.d

ensuite créons un fichier :
Copy to clipboard
sudo votre-éditeur-de-texte-préféré ~/.config/systemd/user/pipewire.service.d/override.conf

dans lequel il faudra ajouter ces lignes
Copy to clipboard
[Service] CPUAffinity=0 LimitMEMLOCK=infinity LimitNPROC=infinity

Même chose pour wireplumber :
Copy to clipboard
mkdir -p ~/.config/systemd/user/wireplumber.service.d

puis
Copy to clipboard
votre-éditeur-de-texte-préféré ~/.config/systemd/user/wireplumber.service.d/override.conf

en collant exactement les même lignes.
On redémarre systemd et pipewire:
Copy to clipboard
systemctl --user daemon-reload systemctl --user restart pipewire wireplumber


Après cela on peut vérifier que systemd à bien pris en compte ces modifications :
Copy to clipboard
systemctl --user cat pipewire.service

idem pour wireplumber.

Et maintenant.


Selon votre machine avec Cable, prenez soin d'observer quels sont les valeurs de quantum qui vous donne le moins de latence et sans Xrun. Pour ma part c'est 64/48000 pour 1.3 ms de latence. Testez cela avec Ardour.
Mon fichier de configuration dans ./config/pipewire... prend la forme suivante :
Copy to clipboard
context.properties = { default.clock.rate = 48000 default.clock.allowed-rates = [ 44100 48000 88200 96000 ] default.clock.quantum = 64 #par défaut default.clock.min-quantum = 32 #au minimum default.clock.max-quantum = 512 # au maximum } #Configuration spécifique au thread de traitement audio thread.name = "audio-thread" thread.priority = 95 # Priorité temps réel élevée thread.cpu-affinity = [0] # Force l'exécution sur les cœurs isolés


Ces valeurs finales sont valables pour la machine citée plus haut


Il y a plus...


Prenons l'exemple de Ardour avec 4 pistes bien cossues et des plugins en veux tu en voilà. Les performances et les Xrun vont s'aligner. Pipewire n'est pas en cause. Mais vous risquez de voir le système partir en vrille. Là c'est un système de travail qui est en cause. En monitorant ce qu'il se passait, mon cœur 4 ou des fois 5 arrivait à saturation alors que le 6 et le 7 ne travaillait pas. Pourquoi ? Aucune idée. Mais la question qui s'est posée est la suivante :
Puis-je assigner des cœurs à un logiciel spécifique. La réponse est oui.
Par exemple pour Ardour il suffit de le lancer dans le terminal ainsi :
Copy to clipboard
taskset -c 1-5 ardour

ce qui fait tourner Ardour sur 5 coeurs. Et c'est nettement mieux. Mais gardez en pour les processus systèmes. Cette procédure est valable quel que soit le logiciel utilisé.

A vous d'essayer les paramètres qui conviennent le mieux à votre matériel et votre méthode de travail


Notes :

Allez sur le web et passez un truc youtube. Après avoir lancé pw-top dans un terminal. Mettez la vidéo sur pause et lancez Ardour. Oh surprise votre quantum reste bloqué au maximum que vous avez déterminé. 1024 par défaut ou 512 dans mon cas.
Donc voilà évitez de faire deux choses en même temps ! 😉

Concernant la commande grub, voici la signification pour ceux que cela intéresse :
  1. isolcpus=0 : Empêche le planificateur standard d'envoyer des tâches sur ce cœurs.
  2. nohz_full=0 : Désactive les ticks d'horloge sur ce cœurs pour éviter les interruptions périodiques inutiles.
  3. rcu_nocbs=0 : Déplace les callbacks RCU hors de ce cœurs pour éviter les micro-coupures.


  • !Liens et commentaires

Historique

Avancé
Information Version
14:34 pierrelo 49
Afficher
12:25 pierrelo 48
Afficher
11:02 pierrelo 47
Afficher
10:55 pierrelo 46
Afficher
10:23 pierrelo 45
Afficher
09:59 pierrelo 44
Afficher
09:58 pierrelo Ajouté explications dans Evaluation des coeurs. Distinction dans gru coeurs physique et hyper-threading 43
Afficher
09:10 pierrelo 42
Afficher
08:57 pierrelo 41
Afficher
Dimanche 26 avril 2026 17:08 bluedid29 remplacement "nano" par "votre-éditeur-de-texte-préféré" 40
Afficher
Dimanche 26 avril 2026 12:31 bluedid29 Ajout test sur système Mx25.1 Xfce 39
Afficher
Samedi 25 avril 2026 21:33 jujudusud Ajout fil de discussion, corrections des liens. en cours... 38
Afficher
Samedi 25 avril 2026 21:04 pierrelo 37
Afficher
Samedi 25 avril 2026 11:11 pierrelo 36
Afficher
Samedi 25 avril 2026 11:11 pierrelo 35
Afficher
Samedi 25 avril 2026 11:04 pierrelo Modification de l'introduction 34
Afficher
Samedi 25 avril 2026 11:00 pierrelo 33
Afficher
Vendredi 24 avril 2026 17:09 pierrelo 32
Afficher
Vendredi 24 avril 2026 17:08 pierrelo Réarrangement du texte 31
Afficher
Vendredi 24 avril 2026 15:49 pierrelo 30
Afficher
Vendredi 24 avril 2026 15:29 pierrelo 29
Afficher
Vendredi 24 avril 2026 15:06 pierrelo 28
Afficher
Vendredi 24 avril 2026 15:04 pierrelo 27
Afficher
Vendredi 24 avril 2026 14:35 pierrelo 26
Afficher
Vendredi 24 avril 2026 08:59 pierrelo Correction typographique 25
Afficher
Vendredi 24 avril 2026 08:45 pierrelo 24
Afficher
Vendredi 24 avril 2026 08:44 pierrelo Corrections du texte, et ajout du paragraphe Optimisation de la configuration audio : Enregistrement vs Post-production 23
Afficher
Vendredi 24 avril 2026 08:07 pierrelo 22
Afficher
Jeudi 23 avril 2026 17:24 pierrelo 21
Afficher
Jeudi 23 avril 2026 16:53 pierrelo 20
Afficher
Jeudi 23 avril 2026 16:46 pierrelo 19
Afficher
Jeudi 23 avril 2026 16:36 pierrelo 18
Afficher
Jeudi 23 avril 2026 16:35 pierrelo 17
Afficher
Jeudi 23 avril 2026 15:53 pierrelo 16
Afficher
Jeudi 23 avril 2026 15:33 pierrelo 15
Afficher
Jeudi 23 avril 2026 15:26 pierrelo 14
Afficher
Jeudi 23 avril 2026 15:19 pierrelo 13
Afficher
Jeudi 23 avril 2026 14:41 pierrelo 12
Afficher
Jeudi 23 avril 2026 14:39 pierrelo 11
Afficher
Jeudi 23 avril 2026 14:38 pierrelo 10
Afficher
Jeudi 23 avril 2026 11:51 pierrelo 9
Afficher
Jeudi 23 avril 2026 10:47 pierrelo 8
Afficher
Jeudi 23 avril 2026 10:39 pierrelo 7
Afficher
Jeudi 23 avril 2026 10:19 pierrelo 6
Afficher
Jeudi 23 avril 2026 10:17 pierrelo 5
Afficher
Jeudi 23 avril 2026 10:08 pierrelo 4
Afficher
Jeudi 23 avril 2026 08:49 pierrelo 3
Afficher
Jeudi 23 avril 2026 08:40 pierrelo 2
Afficher
Jeudi 23 avril 2026 08:20 pierrelo 1
Afficher