@lilith
Yes I think you have described and configured everything the right way.
One observation, the configuration for "nice" in limits.conf strictly isn't needed, but it also won't hurt. Just some old Internet lore that gets propagated. Also maybe best to set the limit of rtprio to 98, as there are some kernel threads running at 99, that you probably don't want to interfere with.
Also you might want to change the rtirq configuration a little bit, there is no need to change priority of any interrupt handling thread except for the soundcard one (on a modern system).
In this vein, is it possible to configure rtirq to only change the priority of say "irq/27-xhci_hcd"?
Possibly try blacklisting the xhci_hcd driver to see if using ehci will work better. Also try different usb ports. Though I suspect that this won't help one bit, but maybe worth trying
I wonder if it's cpu use that causes the xruns, maybe some priority inversion. If you run hackbench from the rt-tests package and leave the mouse and screen more or less idle, does that also cause xruns?
What happens if you start jackd manually instead of using cadence/qjackctl?
Have you tried using Ardour's ALSA backend instead of JACK, does that change anything?
Possibly the problem is with some plugin you are using. Maybe trying your project without any plugins at all, or replacing the virtual instruments with others could offer some insight.
Personally I don't understand why using the scrollwheel would cause xruns, this might offer a clue to the problem. Interested in hearing if disabling compositing will help, though I kind of doubt it.
One observation I've made in the past, is that I can quite easily make jackd xrun by pressing a lot of keys on my midi keyboard, but in an excessive manner, trying to press as many keys as I can quickly with both hands, not playing normally. Maybe jack does indeed have a problem with processing a lot of midi events. This happens with no clients connected to jack at all, and iirc happens with both jack1 and jack2. I've inquired about it a few times on irc, but as I don't really use midi at all, I've never bothered to pursue the problem.
You could also consider building jack2 with the --profiling option, see:
http://www.grame.fr/ressources/publications/Timing.pdf
This might offer some insight into the problem, I suspect that it will only show you that ardour was late in finishing the graph, but who knows...