Roon DSP (Accessing multiple CPU cores for a single zone)

@joel, I have a technical question relating to DSP, and core assignment/utilisation. I was hoping you might chime in.

When DSP processing is applied within a zone, does this processing sit across multiple CPU cores, or does Roon favour a single core for DSP?

To provide a little background, I have moved away from Roon Rock (To Ubuntu 21.04/Roon Server) out of necessity to support my Motu MK5 lite. The DAC functions better (Auto sampling rate changes, click and pop free etc) with the later Linux Kernels, 5.11+. In doing this, processing loads seemed to have slightly increased. I was previously getting circa 20x on 44.1k (Roon Rock) - now circa 10x (Ubuntu), circa 5-8x @ 192k on Ubuntu previously 10-20x on Rock. I wonder if this is simply due how the differing OS’s handle CPU speeds/turbo boost etc?

You can see from my htop pic below, a spread of CPU utilisation @ 192k running a 3way procedural crossover, and multiple instances of PEQ. Roon App shows 5-3.4x processing, with CPU utilisation around the 20’s. (Refer to Htop pic).

My NUC is a little old, its a series 4 i5, 8gb ram, 250gb SSD.

Single core , if you turn on parallelize sigma Delta modulator it will go across two, but it won’t use more than two and not sure it works for everything or just DSD upsampling.

1 Like

You mean processing speed as shown by Roon or?
If so then going from 20x to 10x has doubled in load , not halved.

Doubled in load, or halved in speed. Yes.

1 Like

I believe that function is only available once DSD sampling is enabled… Its not helpful in my circumstance. Thanks for the suggestion.

1 Like

It would make sense that Roon Rock (Minimalist/purpose built) is more efficient than Ubuntu, this doesnt surprise me but the delta did.

Is this processing speed accurate? Could the differences in OS change boost management, CPU freq, etc?

@dylan, Is there anyone @ Roon that can provide some insight concerning these observations, and whether load can be better managed to improve efficiency? Other than getting a higher spec PC.

It seems contradictory Roon would be suggesting a low multiple (5-8x) over real time processing (In this instance), yet my CPU’s still have substantial utilisation remaining (C1,6%, C2,9%, C3,27%, C4, 24%).

Processing speed isnt just cpu related, operating system overheads, network and storage all play their part. It’s an indicator of how much times real-time it’s taking not CPU utilisation. CPU obviously plays its part but it’s not the entire story. My pi’s on wifi have lower speeds with DSP than hardwired devices.

Networking shouldn’t be a consideration in my situation, as the (Wired, gigabyte) Core is directly connected to my Motu interface via USB. In this instance, there is not Network traffic.

Completing some additional tests: Processing speeds don’t change with the RPI4 (Hardwired) endpoint in or out (Direct connection to the Core). There is plenty of ram 7.6gb free, storage is circa 200gb+ free (Not sure why storage is needed for this application).

Reviewing the Roon DSP Wiki:

Note that Roon currently runs the DSP engine on one CPU core per zone–so this reflects the load relative to consuming a full core. “2.0x” means you’re using 50% of one CPU core to play music in this zone.

So this “ballpark” explains the CPU utilisation I am seeing. CPU utilisation = 100/Processing speed.
IMO, it’s incredibly limiting for DSP processing to be limited to a single CPU core for processing.
Especially as modern processor design move to high core densities.

@joel , @dylan,
Hi Guys, is there a road map to allow multi-core processing for a single high demand endpoint?

I realise I can update my Roon server hardware or use a different PC, to overcome these perceived inefficiencies in code, but with adequate CPU bandwidth still available (Series 4 NUC), this exercise seems wasteful and unnecessary. The inefficiency would also exist on faster machines.

With modern CPU’s moving to more and more cores (8+), a DSP single core assignment (per zone) seems limiting. Can Roon please provide comment?

More information on the speed and how USB connections still factor into the calculation.

1 Like

Thanks for that link, its helpful information.
In my case the DAC (USB) is the same in both observation cases.

After doing some reading I think the differences come down to how the OS (Rock V’s Ubuntu) assign CPU allocation to Roon and also how the OS handles CPU frequency adjustment etc.

I really would like to get back to my core question:

Understanding its 1x CPU core for DSP in each zone, is Roon looking to enable multicore CPU DSP processing for single zones?

This won’t be answered, as Roon Labs does not disclose product evolution plans. However, like Si said earlier, “Parallellize Delta/Sigma” enables the DSP for that zone to utilize two cores.

As i’m sure you are aware, just throwing cores at a resource demanding process wont necessarily make it speed up linearly neither.

Thanks, for this information.
I am very much struggling to find this option relevant to Parametric, and Procedural EQ?
Does this only apply to DSD sampling changes?

1 Like

As i have understood it, no, it applies to the whole DSP-engine. Still, it would be better if @brian could help us here.

Well I cant see the option.
My device is limited to 192k.

It’d under upsampling section to turn it on.

I understand, thanks.

The option doesn’t present on my interface. I have checked all sub menu’s.
I believe this setting is only available for DSP sampling. I don’t use DSD, and I don’t resample.
My DAC is limited to PCM 192k.

I have seen this option using my RME ADI DAC fs, but not my Motu MK5.

It would be helpful if Roon support could provide a comment.

Here are a few pics, just to confirm the option is not present.

Your endpoint or DAC doesnt support DSD so it doesnt show, so nothing you can do. The Moto does so whats it connected to, if linux then looks like its doesnt support DSD on Linux so no options?
Here it is on mine

There’s nothing if I scroll down.
You can also see that function is a DSD related option. My DAC doesn’t do DSD.

Latest version of roon

See above edited my post before you responded.

That option is a DSD function.

Motu is connected to a Ubuntu RPI4 endpoint.