RoonAppliance.dll consuming 100% of one CPU core permanently

Roon Core Machine

My Core is running as VM. I have two hypervisors at hand. I tried both:
Dell R630:

2* E5-2640v3, hyperthreading enabled; 128GB RAM, 2*4 1Gbps Ethernet (connection details below) configured as Trunk. The VM for Roon is being passed on only the VLAN as untagged network that it is supposed to be used with clients/endpoints. All clients/endpoints are located in the same network/VLAN as the Roon core.

Network connection details: 2*2Gbps (MAC-based LACP for VM, datastore (NFS) and media library/internet access

XCP-NG 8.2 as hypervisor, VM Rocky Linux (RHEL clone) 9.2, Core 2.0 build 1272.

Synology rs1619xs+:

1D-1527; 16GB RAM, 110Gbps Fiber configured as Trunk. The VM for Roon is being passed on only the VLAN as untagged network that it is supposed to be used with clients/endpoints. All clients/endpoints are located in the same network/VLAN as the Roon core.

Synology VMM as hypervisor, VM Ubuntu 18.04 LTS, 2 vCPU, 8GB RAM. Core 2.0 build 1272. This was my first VM and I tried to run it on the Dell as well – unfortunately the observed behavior did not change.

For all the equipment: All most recent updates/patches installed. All performance/health indicators are normal. Cannot see, except for the time where the library was being read by the core, any indication of excess traffic and even that was throttled by CPU cores/speed of the hypervisor and not the network or storage capacity. The disk/volume utilization of the Synology never raised higher than ~25% and network never over 700Mbit/s.

Networking Gear & Setup Details

Edge-Switch: Ubiquiti USW-Pro-48-PoE (FW: 6.5.32); Router/Firewall: UDM-Pro (3.0.20). Uplink from Edge-Switch to Router is a 10 GbE fiber trunk (SR). Link from Synology to Edge-Switch, as stated above as well 10 GbE trunk. From Dell to Edge: 2*2 GbE (LACP), Trunk. Where wireless is used for endpoints all APs are connected through 1 GbE uplinks to my Edge switch. My APs are UAP-AC-Pro (6.5.28) and U6-Lite (6.2.49). 1 endpoint is connected through the AC-Pro, the other through an U6-Lite. The Denon is wired with 1 GbE to the Edge-switch. All cables CAT6e.

Connected Audio Devices

Different ones: Denon 1700H (Airplay, wired) 2*Hifiberry (RAAT, wireless, latest available fw image). It does not matter which endpoint is used/if any is selected at all.

Number of Tracks in Library

On the Synology. In an SMB shared folder. This is a 4 disk RAID 5 (HAT5300-8T) and SSD read/write cache (2*Samsung SSD 970 PRO 1TB). 927GB; 125.716 files; 9925 folders.

SMB settings: SMB min: SMB2, max: SMB3, Transport encryption: Client defined, server signing: disabled, opportunistic locking: enabled. Allow symbolic links within shared folders: disabled. Monitoring changes on all subfolders within the directory: enabled, wildcard search cache: enabled.

SSD-cache: Occupied: 18.5GB, reusable: 932GB, cache hit-rate: 99%.

Description of Issue

The user interface through the Roon app is extremely slow. Regardless of which screen is being opened – except for the settings, playlists and tags screen – takes multiple minutes to load. Playback of Music, regardless if streamed from Tidal or local library and independent of endpoint starts with a delay of at least 30 seconds. Skip forward of tracks takes similarly long. Most playbacks will stutter at least once per track. According to the user interface library import is complete including background audio analysis.

The performance issue has developed during import of the library. Actually, until approx. 50 or 60% of the library had been imported the user experience was significantly better even though the system was busy importing/analyzing the library with loading times of a couple of seconds at worst.

The issue appears to be permanent. I first started to experienced issues on my Core when 2.0 came out. At the time I did not have time to dig into it and therefore just shut down the VM to stop it from excess consuming CPU and RAM until I had time to look after it. I first thought it might be just an indexing thing, so I rebooted the VM and let it run for a couple (like 9 I believe) days but it never got better. I then migrated the VM to a more powerful Hypervisor, but it showed the same behavior, regardless of how much cores and RAM it had assigned. The user experience never improved significantly. As a next step, to exclude any application upgrade, OS or DB specific problem I started from scratch.

I created a fresh VM with 32 vCPU cores (which is also the number of available CPU cores including hyperthreading enabled for this host), 64GB of RAM and Rocky Linux 9.2 as operating system. My base setup included setup of repositories for the system (EPEL and CRB) and dependencies for Roon. As well, for testing purpose (would not like to run this permanently like this, but for testing…), I disabled the firewall service and SELinux. At first it looked great, until the issue re-appeared after approx. 50+% of my local library had been imported. I tried to look into the load on the VM and this is what I observed: Until the issue appeared Roon did use all of the provided vCPUs with a total load of 90% across all cores and was slowly saturating the assigned RAM (mostly cache though). After the issue started to re-appear it seems Roon is now constantly utilizing one CPU core pretty much permanently at 100% whilst the others get used only occasionally for little amounts of time. RAM usage remains at approx… 10GB RAM used and 55GB buffered/cached (to be clear, I ‘am not complaining about the RAM usage, if you say this is what it takes to perform → fine, if it actually does. If you tell me this gets resolved by throwing another 16GB in → fine too!, I ‘am just describing what I have / see at this moment).

The process consuming this one CPU core is /opt/RoonServer/RoonDotnet/RoonAppliance RoonAppliance.dll -watchdogport=41725

What are you seeing in the logfile?

By the way, since you are using VMs, this is going to get booted to the Tinkering category, posts in which do not, for some reason, show up in the “Latest” category.

I note that both processors are Xeon, which is not the best choice for running Roon Server; they have relatively slow thread performance when compared to an eight generation i3 with 2 cores / 4 threads. My Xeon E3-1225 v5 would run core on bare bones, but not as well as an i3 processor, and that Xeon has better single thread performance than both your processors. Typically, the more cores, the slower the processing.

Single thread performance is key, so using many cores won’t help you much. Moreover, note that Roon uses one thread for library management, and up to two cores per zone for audio. Audio analysis can use multiple cores. Likewise, I believe multiple watched folders uses more CPU. This, coupled with virtualization, is the likely cause of the bottleneck.

Thank you for your reply Martin and Bill. Appreciated!

What I do wonder mostly about is that before 2.0 arrived this was running on my Synology as a VM which is by any metric actually a worse performer. I do not say the perfomance was stellar, but it was acceptable for my purpose.

Looking into the logfile as suggested above, based on your feedback and the application behaviour:

  1. In fact the identification of the tracks is not complete. I did not see that before bc. on the iPhone it does not show this activity. It is visible only on the iPad and through logs.There is like ~15k tracks still in the queue. Why they take so much longer than the other ~70k → no clue. Any suggestions?
  2. Based on the above it actually appears that Roon is not just single threading the library mangement, but will handle through this thread as well the track identification.
  3. The virtualization might account for maybe a 5% at worst overhead when it comes to CPU and a 10% overall in worst case workloads. So, even running this bare-metal on the same HW would not make a significant difference even if I were willing to.

I have now tried to install the core onto my HTPC.
Specs:
Intel Core i7-12700F
32GB DDR4 RAM
2TB Samsung 980 Pro SSD
Netword: wired, 1 GbE, to the above mentioned Edge.
Windows 11, latest patch.

The behaviour is the pretty much the same. One core fully utilized. User interface started to become unusable at around 60k imported tracks. Import of new tracks has pretty much stopped/is incredibly slow - this is actually worse than on the other two machines. Besides that the logfiles is not giving a lot for me besides it appears to try to import tracks and honestly reading this file and telling me whats going on is what I would expect support to be doing taking into account this is a payed product and the complete absence of public technical documentation for Roon.

So, how about getting a bit of support Roon team. At this very moment I’ am quite unhappy with the complete absence of Roon’s support team (I’ am not talking of the two community members that have been so kind to respond).

This thread is in Tinkering because you’re not running an approved configuration, i.e., VMs. It is unclear if this changed when moving to an i7 processor. If you’ve installed on bare bones, then please open a new thread in Support.

I wrote I installed it on my HTPC - completely different machine running Windows 11. So, when I get you right Roon would now look into my logfiles as it is running now bare-metal if I rinsed and repeated all fo the above. Before, with the reason it is running inside a VM they would not even take a look. I see. Do not get it.

Martin, I do appreciate your response. Thank you for bothering. What I do not appreciate is the customer service policy of Roon.

I have just cancelled my subscription and will not bother any longer. Too much frustration and personal effort for too little gain in my free time.

I’m sorry it wound up this way for you, Christian!

There’s certainly seems to be some kind of resource contention/leak in the current version of Roon, but without insight into the code, it’s hard for any common user to make informed guesses about what it could be.

Roon also seems to be booting every possible support case over to #Tinkering, which makes it not show up in the #Latest list. Doesn’t really help IMO, but maybe it’s a marketing thing. It does make me wonder if they’re having even more difficulty staffing the support crew.

1 Like

Decisions about shifting posts to Tinkering are usually made by Mods, not Roon. We do it where users are having issues with an unsupported configuration. Roon doesn’t support VMs and have made that clear. Tinkering is the place where users are most likely to get help for VM setups. It is incorrect to say that every possible Support case is booted to Tinkering, Only those that are unsupported by Roon are shifted by us. The alternative is to leave them in Support and our experience is that users with experience of VMs aren’t necessarily engaged in Support.

When @Christian_Stoertz changed his setup to run on a new machine under Windows we suggested he open a new Support thread without reference to VMs.

Tinkering is not included in the default Latest listing as it is not thought to be relevant for most users, almost by definition. A Latest listing for Tinkering can be obtained by selecting it as a category. Users can also Watch, Track or Watch First Post for particular categories by clicking on the bell icon in the top right on the relevant Category page.

1 Like

Good to know. Just going by my impressions of the past year. I did set the Watch New Post for Tinkering, to keep track, but it would be nice if newly commented-upon posts in Tinkering also showed up in my Latest feed. Is there a way to get that effect?

Not by a user SFAIK. You could post a request on the Discourse Forum for greater user configuration of the Categories in the default Latest list.

1 Like

This topic was automatically closed 45 days after the last reply. New replies are no longer allowed.