I configure my buffer settings through the pipewire configuration files. Just about everything that you can imagine can be configured in pipewire. The key locations for making the changes are in the following paths:
/usr/share/pipewire/pipewire.conf for the PipeWire daemon settings
/usr/share/pipewire/pipewire-pulse.conf for the PipeWire pulseaudio server
/usr/share/pipewire/client-rt.conf for the PipeWire native client settings
/usr/share/pipewire/jack.conf for the PipeWire JACK clients
In my particular case, I only use apps that support JACK for my audio work, so I keep everything default except for the jack.conf file. I copy the /usr/share/pipewire/jack.conf over to /etc/pipewire/
I then edit jack.conf in the new location and uncomment the following lines:
#default.clock.rate = 48000
#default.clock.allowed-rates = [ 48000 ]
#default.clock.quantum = 1024
I then set my settings to the desired amounts. "Quantum" = buffer size -- test and find the ideal setting for your personal system.
That's really all there is to it for me as far as pipewire configuration. Since there is currently no easy tool for changing the quantum, I go into this file and change the quantum when I want to change the buffer size. I can totally see this becoming simple once someone develops a GUI based tool to easily make these changes. At the moment, I don't know of such a tool yet, but editing this single file is very easy when I need to make a change.
---------------------
My ultimate goal is to document the easiest process possible for the majority of users to very easily start using Linux. Because of this, I've tried to keep things as simple as possible with my configuration. I don't use RT kernels. I use the standard generic vanilla kernel, but I use it with the threadirqs and preempt=full kernel parameters to make my system run as a real time machine.
Note that it is entirely possible to go much further with configurations to get even better performance at ultra low latencies. For example, the rtirq script can be used to prioritize the threads, but I'm purposely trying to avoid needing any settings other than what already comes in the default distro.
Aside from that, I just adjust the realtime priorities and the memlock limits:
Real-time priority limits are usually stored in /etc/security/limits.conf and /etc/security/limits.d/. The best option is to add a new file 95-pipewire.conf in /etc/security/limits.d/ with this content:
# Default limits for users of pipewire
@pipewire - rtprio 95
@pipewire - nice -19
@pipewire - memlock 4194304
Then add your user to the PipeWire group so that you can use these priorities.
That's really it. That's really all someone needs to get really usable low latencies. :)
EDIT: For more information and additional options, see the pipewire wiki's performance tuning page:
https://gitlab.freedesktop.org/pipewire ... nce-tuning
EDIT#2: I guess I should had that I run my CPU governor set at "Performance".