@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.
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?
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