Roon Slow Performance Post-Backup on Latest Release (ref#4BGNNM)

What app are you having the slowness issue with?

· Roon

What kind of performance/speed issue are you experiencing?

· Tracks take a long time to play

Please try to reboot your Roon Server

· Yes, rebooting helps, but the issue returns after some time

Please try to reboot your networking gear (Router/Switches/etc.)

· No, the issue is still the same even after a reboot

Is there any change in behavior if you try to navigate to Roon Settings -> Library and set both Background and On-Demand Audio Analysis to Throttled or Off?

· No, the issue is still the same

Does the issue happen on multiple Roon Remotes (controllers) or just one?

· Issue happens on multiple remotes

Router Domain Name System (DNS) change

· I was able to change my router's DNS servers but it did not help

What is the operating system of your Roon Server host machine?

· Roon on a NAS (Synology, QNAP, ASUSTOR)

Timestamp of issue occurrences

· Backups occurred at May 27, 4:00 AM EDT

Describe the issue

Backups cause subsequent performance issues.

After yesterday's release, which ran well for quite some time, I stopped Roon for the evening and went to bed. My backups ran overnight and when I woke up this morning, all remotes were slow as molasses when interacting with the server.

I've noticed this in the previous build as well, but I never isolated it as well as I have in the past 24 hours. This all seems consistent with recent observations on several other threads that backups are eating up system resources that don't seem to recover after a backup is completed.

Describe your network setup

pfSense 26.0.3 running on a Protectli 4-port Vault, running pfBlocker NG firewall; Suricata IDS/IPS; Dynamic DNS; etc. All household devices have DHCP reservations (“static mapping”). I am not running a VPN. My Roon box communicates with the outer world via standard port forwarding. Suricata monitors for port scanning and shuts off scanning hosts when port scanning is detected;

Cisco Catalyst 2960G core switch.

All 1 Gbps certified CAT6 cabling;

Wireless is 2x Netgear WAX218, connected to the 2960G.

Hi @DDPS,

Thank you for the report. We’ll take a look at logs and let you know what we find. Please stand by for now.

Hi @DDPS,

Thanks for writing in and for sharing your report! Our team was able to take a closer look at a fresh Roon Server diagnostic report, and saw a few things that are worth surfacing:

First, we’re seeing that Roon is scanning Synology’s hidden metadata/thumbnail directories (@eaDir) as part of its library watch. These are created by Synology Audio Station and DSM’s media indexer and appear inside every album folder. Across all 20 log files there are 292,634 @eaDir scan log entries, roughly doubling Roon’s actual scan workload with junk directories it has no use for.

With that, at startup, we see:

Queueing initial load of 64,643 tracks + 76,569 auxfiles
finished with 64,643 dirty tracks ... 330,619 changed objects

The 330,619 “changed objects” strongly suggests the backup process is modifying file timestamps or the Roon database state in a way that invalidates Roon’s cache, forcing it to re-examine everything from scratch on the next start.

As an initial first step, in DSM, go to Control Panel → Media Indexing (or via Audio Station → Settings) and remove your music share from the media index scan scope. This will stop the creation of new @eaDir entries and, critically, stop DSM’s media indexer from running I/O against the music volume concurrently with Roon’s own operations. After doing this, run a Roon rescan, it should be dramatically faster and leaner.

Another thought here: Go to Roon Settings → Backups and verify: is the backup destination inside or adjacent to /MyMusic, or is it strictly /RoonBackups? If the backup process touches file timestamps on music files (e.g., via a Synology snapshot or DSM backup task that includes the music volume), Roon will see the entire library as modified and force a full rescan every time. The /RoonBackups volume appears correctly mounted as a separate btrfs subvolume, so the Roon backup itself may be fine, but check whether any other DSM task (HyperBackup, Snapshot Replication) runs at 4 AM and touches the /MyMusic volume.

If you navigate to your library clean-up page, what does it show? I ask as it looks like your database size is around 5.5GB, which seems quite large considering your current library size of ~65k tracks.

Thank you @DDPS! :folded_hands:

I’m very aware of those @eaDir directories. They’ve been there as long as I have used Roon, even Roon on NAS. I just purged them recently using a script to see if those played any role (turning off indexing and/or Audio Station does not remove them) and they have not - per long term behavior - made any difference. Roon scans through all of them and ignores them VERY quickly when doing a scan of my collection. About 34 seconds to scan 210,000 files (which is a new lower number after I rebuilt the @eaDir during said recent experiment), resulting in 64643 music files. Again, this has never been an issue.

Secondly, I have a dedicated share for Roon Backups, as I always have. It is not part of the /music share. And there are no other tasks running at 4AM.

Clean up shows 0.

The reason my database is as large as it is - last time I checked, it was 10 GB - is because I have very high resolution album art for most of my files.

I hope that is of help. Please let me know if you need more.

ALSO: The performance issues I have since the latest .NET 10 release arise only when playing from long playlists and the queue gets reprocessed after each song plays…and basically each song takes longer and longer and longer to play. If I play an album rather than a playlist, performance is better. If I play no playlists, I rarely see performance degradation.

A ChatGPT analysis reported:

Yes. The logs point to a very specific cause: Roon is spending 30–40 seconds doing library/query bookkeeping between tracks, and the next track does not start until that work finishes.

This does not look primarily like a NAS read-speed problem, audio decoding problem, or endpoint buffering problem.

The smoking gun

In the current log, every noticeable between-track pause lines up with entries like:

[library] endmutation in 34453ms
[library] endmutation in 35046ms
[library] endmutation in 35122ms
[library] endmutation in 35844ms
[library] endmutation in 37587ms

Those are 34–38 second library mutations.

Examples from the current playback session:

Track ended Next track started Delay Blocking work
“I Got the Feelin’” 19:04:34 36 sec endmutation in 34453ms
“Little Latin Lupe Lu” 19:05:28 37 sec endmutation in 35046ms
“Try A Little Tenderness” 19:06:25 37 sec endmutation in 35122ms
“Please Please Me” 19:07:20 37 sec endmutation in 35844ms
“What a Wonderful World” 19:09:43 46 sec two long mutations, including 37587ms

This also happened earlier on [my RoPieee], not just [my iPad]:

[my RoPieee] transitions: 36/36 had big delays, avg ~33 sec, max 67 sec
[iPad] transitions: 7/7 had big delays, avg ~38 sec, max 46 sec

So the iPad is not the root cause.

What Roon appears to be doing

Right before those long endmutation entries, the log is full of repeated lines like:

Debug: [query] Sooloos.Broker.Music.LibraryAlbum:1 dirty
Debug: [query] ... re-sorting item-by-item (internaltype=LibraryAlbum)

In plain English: after each track finishes, Roon records the play, marks a track/album/artist/work/performance as “dirty,” and then re-sorts or refreshes a lot of live library queries.

That is taking tens of seconds.

The pattern is especially suspicious because your queue is huge:

queue_items_remaining: 828

Earlier:

queue got oversized. trimming 2495 items from start
queue_items_remaining: 2495

So Roon is handling very large playlist queues while also keeping a lot of library/album query state active.

Likely practical cause

My best read is:

Large active playlist queue + live Roon library views/query state + play-count/metadata updates are causing Roon’s database/query engine to re-sort album/library data after each track, blocking the next track from starting.

This has the feel of a Roon performance bug or pathological case, not normal buffering.

The repeated line:

[updatemetadata] Flush: pending adds=2366, pending removes=57

also shows Roon has a large pending metadata-update set, though the actual 35-second waits line up most directly with the LibraryAlbum query re-sorting and endmutation entries.

What is probably not the main cause

I would not chase these first:

NAS/file read speed. Once the long library mutation finishes, Roon prebuffers and starts playback quickly. The audio engine also reports high processing speeds like HighQuality 91.6x, 27.4x, etc.

DSP/audio conversion. The logs show plenty of processing headroom.

TIDAL/Qobuz login warnings. Those appear, but they are unrelated noise.

The iPad endpoint. There are real long rtt sync iPad warnings, but the same between-track delay pattern appears on [my RoPieee] with the ADI-2 DAC. The iPad may be a separate minor issue, not the 35-second playlist gap.

[My Laptop] / localhost RAAT connection failures. Noisy, but not aligned with the repeated transition stalls.

My diagnosis

The performance slowdown is coming from Roon’s own library database/query update cycle between tracks. Each completed track causes Roon to update play history/dirty objects, then it repeatedly re-sorts live LibraryAlbum queries. With your very large playlist queues, that bookkeeping takes roughly 35 seconds per track transition, which is exactly the delay you are hearing.

The best immediate workaround is: restart Roon, close extra remotes/views/extensions, and play smaller queue chunks. If that confirms it, I would send Roon support the specific keywords:

[library] endmutation in 35000ms
Sooloos.Broker.Music.LibraryAlbum re-sorting item-by-item
queue_items_remaining 828 / 2495
[updatemetadata] Flush pending adds=2366 removes=57

That is the evidence trail.

Hi @DDPS,

Thank you for the detailed response. One quick clarifying question:

If you restart Roon Server in the afternoon or evening, and then disable your overnight scheduled Backups while leaving the server online, how does it perform in the morning when you play these large playlists? This should entirely minimize background metadata update cycles to test track transitions on these playlists directly.

We’ll gather logs during this test. Thank you!

I am sorry that I wasn’t as clear as I could have been - I have already performed this test and it performs perfectly well when no backups have been done, until I’ve been playing music from a playlist for several hours, at which point the system takes increasingly longer time between each track before starting to play. If I just play albums, the problem doesn’t manifest that reliably. It’s the playback of long playlists that seems to really have the largest negative impact.

Thanks for letting us know @DDPS.

We don’t have any additional troubleshooting steps to share at this time, but we’re confident the optimization work our development team is wrapping up should help you and your performance issues as well.

Thanks for your ongoing patience as well! :folded_hands:

Hello @DDPS ,

We have a fresh set of memory improvements available in our latest Early Access release. If you’re willing to try Early Access, please let us know if it helps on your end, thanks!

Thanks @noris - I don’t do Early Access, but I eagerly await the production release. Thanks again!

Hello @DDPS

Please keep us posted on how it goes after the next update.