[LAD] Is Piperware a successor to Jack/Pulseaudio?

Fons Adriaensen fons at linuxaudio.org
Wed Jul 7 22:44:23 CEST 2021


On Wed, Jul 07, 2021 at 01:00:21PM +0200, Wim Taymans wrote:
 
> Challenge accepted!... I made a little jack client with 32 input and 32 output
> ports that memcpy the samples. Then I started 16 of those and linked them
> all in a long chain.
> 
> Then I linked the input of the chain to a USB mic and the output to another
> USB card (it needs to do adaptive resampling to keep this going),
> 
> That takes about 6 seconds to setup on my machine. I run this with a buffer
> size of 128 samples and 48KHz.

Tried something similar: 16 instances of JackGainctl (from zita-jacktools)
with 32 channels (i.e. 64 ports) each, run from a Python script.

With jack2 this takes 0.5s to create the clients, and on average 0.1s to 
connect all of them in a chain (15 * 32 connect calls).

With jack1 this fails miserably. Reason is probably that jack1 recomputes
the graph for each and every connection change, even if the actual client
dependencies don't change [1].

Plain unpatched kernel, with -p256, no xruns after one hour.
 
> Works okish, some xruns here and there and this is a stock fedora setup
> with extra rtprio for the user. No low latency kernel or any tuning. I had to
> increase the max fds to 8192.

Why on earth do you need that many kernel objects (fds) to synchronise just
16 processes ? Again something doesn't scale here...

> This utterly fails with jackd on this system, it doesn't even want
> to start all the clients, I'm sure it's something with the config somewhere...

See above if you were using jackd1.

[1] This was one of the many things that my rejected patch (years ago) actually
fixed. IIRC the complexity of jack_connect() in jackd1 is at least O(n^2) if
not O(n^3) where n is the number of existing connections - this doesn't scale.
 
Ciao,

-- 
FA




More information about the Linux-audio-dev mailing list