Chargement...
 
Skip to main content

5 - Les serveurs son : JACK, PipeWire, PulseAudio et autres...


Je propose que ce soit sur ce fil que l'on continue l'échange concernant le tuto. On arrive maintenant à un affinage. J'en veux pour preuve ce qui suit.
D'abord le paramétrage est légèrement différend selon le type de processeur exemple : 8 coeurs physiques ou 4 coeurs hyper-threadé donné pour 8.
Ensuite une autre question s'est posée : comment donner la prééminence à l'irq de la carte son ? Qu'elle soit en USB ou ou en interne.
L'idéal serait que l'irq se trouve aussi dans le CPU 0, le même qui gère pipewire, afin d'éviter les micro-coupures. Sur ma machine, 8 coeurs physiques, et si je monitor l'attribution de l'irq par un :
Copy to clipboard
watch -n 1 "cat /proc/interrupts | grep -E 'CPU|xhci|snd'"

qui raffraichit la commande toutes les secondes, je vois qu'il m'attribue l'IRQ 124 (qui correspond à XHCI mon port USB) sur le CPU 4.
Pour visualiser les interruptions et ou elles se produisent il faut connecter une entrée de la carte son à la sortie par raysession une fois la connexion faite je ferme raysession. Pour ma part j'ai connecté un instrument externe histoire qu'il n' aie pas d'interférence avec un logiciel. La valeurs qui change indique sur quel CPU l'IRQ est géré.
Puis j'ai assigner l'IRQ au CPU 0
Copy to clipboard
echo 0 | sudo tee /proc/irq/124/smp_affinity_list

c'est à dire même CPU pourl'IRQ et Pipewire c'est à dire le 0
Par contre cette commande doit être exécutée chaque fois que l'on redémarre le PC.
Mais il y aura bien un truc pour automatiser.
Pour ma part je trouve cela enrichissant, on entre vraiment dans les entrailles de l'audio-numérique et de l'OS.
Sans compter que ce pourrait être utile pour la prochaine version de Librazik
Ces réglages dépendent beaucoup du matériel, difficile de les généraliser.
autre point que tu aurais pu aborder dans l'intro; l'interface graphique. Moi qui fait tourner des machines achetées d'occaze sur le bon coin, j'y suis sensibilisé. Si on a une machine dédiée MAO, il faut que la puissance de calcul soit dédiée au son, pas à faire tourner une interface certes très jolie, mais gourmande en ressources.
Perso j'installe LXqt, sur debian un bon compromis entre l'esthétique et l'utilisation des ressources. LXqt étant modulaire, on n'installe que le strict minimum. Pour mes machines, je fais la différence entre celles dediées à la MAO, et mon ordi de bureau. L'intérêt d'acheter sur le bon coin, c'est qu'avec le même budget, on peut en avoir plusieurs! Elles sont trop juste pour faire tourner un windows obèse, d'ou leur vente, mais sont parfaitement opérationnelles sous linux.
Je suis parfaitement d'accord. Je me demande maintenant si je ne vais pas faire un test sur une Debian Trixie qui est plus souple finalement que bien d'autre distribution dédiée. En commençant par une installation minimale, sans interface graphique.
Lorque tu me parles de LXqt si tu fais un : free -h juste après le démarrage, tu obtiens quoi ?
Ensuite si tu fais un htop quelle est l'activité ?
Pour lxqt comparativement à XFCE4 au niveau mémoire RAM, ça se tient. Avec Mate, pareil. De même au niveau de l'activité donnée par htop.
@ piratebab
Pour répondre encore mieux à ta question concernant 8 coeurs en hyper-threading ou bien 8 coeurs physique.
ça dépends des autres utilisations que tu en fais.
Mais pour l'audio, il est préférable de désactiver l'hyper-threading :
Deux manière :
1) de manière temporaire
Copy to clipboard
echo off | sudo tee /sys/devices/system/cpu/smt/control

2) de manière définitive avec le paramétre nosmt
Copy to clipboard
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash threadirqs nosmt ..... "

Et dans le s fichiers override.conf de systemd pipewire et wireplumbrer si on n'a pas utiliser le paramètre grub
Copy to clipboard
nosmt
:
Copy to clipboard
[Service] CPUAffinity=0 1 LimitMEMLOCK=infinity LimitNPROC=infinity

Bon on oublie le paramètre
Copy to clipboard
nosmp
ce n'est pas adéquat. Avec un noyau Liquorix qui est compilé avec le paramètre
Copy to clipboard
CONFIG_NO_HZ_FULL=y
Les paramétrages nohz_full précédemment donné dans le grub sont adéquat, quel que soit le CPU utilisé.
J'ai juste ajouté à l'article une note concernant les types de processeurs. Dans un CPU multi-threading il faut juste les traiter par paire : 0,1 ou 2,3 et ne pas séparer son thread.
Bon je crois avoir terminé avec cet article. Je demande à ce que certains le relise et d'autres teste la solution. Pour ma part, sur ma machine tout est ok.
J'ai corrigé pas mal de choses donc ...
Il me semble que sur un proc intel multithread, par ex 4 coeurs physiques, ce sont les coeurs virtuels 0 et 4 qui sont sur le même coeur physique
copie cette procédur dans un terminal :

Copy to clipboard
for cpu in /sys/devices/system/cpu/cpu[0-7]*; do core=$(cat $cpu/topology/core_id); thread=$(cat $cpu/topology/thread_siblings_list); echo "CPU logique: $(basename $cpu) | Cœur physique: $core | Frères (threads): $thread"; done

tu sauras exactement de quoi il s'agit .
Chez moi j'obtient cela :
Copy to clipboard
CPU logique: cpu0 | Cœur physique: 0 | Frères (threads): 0,4 CPU logique: cpu1 | Cœur physique: 1 | Frères (threads): 1,5 CPU logique: cpu2 | Cœur physique: 2 | Frères (threads): 2,6 CPU logique: cpu3 | Cœur physique: 3 | Frères (threads): 3,7 CPU logique: cpu4 | Cœur physique: 0 | Frères (threads): 0,4 CPU logique: cpu5 | Cœur physique: 1 | Frères (threads): 1,5 CPU logique: cpu6 | Cœur physique: 2 | Frères (threads): 2,6 CPU logique: cpu7 | Cœur physique: 3 | Frères (threads): 3,7