Multicore support needs a big overhaul
Posted: Tue Nov 15, 2011 1:04 pm
Let me start by saying sorry - this kind of turned into a bit of a lengthy post... but I think it's an important issue.
Lately I've been frustrated by the state of multicore support in Live. Basically, depending on the specific content of a project, it's often the case that projects with a puny number of tracks can start to really produce major dropouts. I've got a 12-core Mac Pro. Power-wise this thing is a behemoth, but Live brings it to its knees well before it should do, on a consistent basis.
As an experiment, I set up a simple test project. U-he ACE is one of the most CPU-intensive synths around, especially when you start to stack voices, so I tried a simple test to gauge comparative CPU usage between Live and Reaper. In both cases I set it up like this:
- Audio interface buffer size = 512 samples
- Set up 1 VSTi track, playing a 1 bar monophonic MIDI sequence
- The VSTi used is u-he ACE on the default preset, but with
(a) "Stack" set to 8
(b) "Quality" set to "Accurate".
(c) No other plugins on the track - just the one instance of ACE.
- Duplicate that track until you start getting CPU dropouts during playback.
The results?
Live: 24 tracks is as far as I can go without issues. This makes sense since a 12-core machine with Hyperthreading = 24 virtual cores. Once I start playing a 25th track though, things grind to a RIDICULOUS halt - huge dropouts all over the place, the whole thing becomes unusable.
24 tracks is a very hard limit - it goes from sounding smooth to total stuttering garbage in the blink of an eye. This correlates to my anecdotal experience with other projects, where things all roll along very nicely to a point, when suddenly adding something innocuous (like an extra plugin here or a new track there) produces major dropouts all of a sudden.
Here is what OS X's CPU meter looks like:
This is at 24 tracks - when things sound smooth
This is at 25 tracks. Audio-wise there are massive dropouts, but notice 2 things. Firstly, CPU usage overall is still quite low. Secondly, it's actually lower than it was for 24 tracks. Why would that be the case? This is certainly weird.
Reaper: 64 tracks is where dropouts start to happen very occasionally, but it can go up to 70-ish tracks before it the dropouts really becomes problematic. By comparison, here's what OS X's CPU meter looks like when running with 64 tracks (when dropouts still aren't really happening majorly yet)
That's more like it. Reaper is using more of the CPU's power overall.
This really paints the situation of Live's level of multicore support, and performance overall - it is far from ideal. In terms of CPU performance, once you start pushing beyond Live's apparent limit - which seems to be equal to (for a non-Hyperthreading CPU) or double (for a Hyperthreading CPU) the number of physical cores in your machine - things go downhill incredibly quickly.
The thing to note is that when Live starts to produce dropouts and crackles, it's Live that's starting to crumble, not the machine or the operating system. Live is the limiting factor here. We all have very capable multicore machines these days and Live isn't equipped to take full advantage of them right now. Our expensive machines aren't being used to anywhere near their full potential by Live at the moment.
Better/more modern multicore support is absolutely my #1 wish for the next version of Live. I really hope they dramatically improve the situation.
Lately I've been frustrated by the state of multicore support in Live. Basically, depending on the specific content of a project, it's often the case that projects with a puny number of tracks can start to really produce major dropouts. I've got a 12-core Mac Pro. Power-wise this thing is a behemoth, but Live brings it to its knees well before it should do, on a consistent basis.
As an experiment, I set up a simple test project. U-he ACE is one of the most CPU-intensive synths around, especially when you start to stack voices, so I tried a simple test to gauge comparative CPU usage between Live and Reaper. In both cases I set it up like this:
- Audio interface buffer size = 512 samples
- Set up 1 VSTi track, playing a 1 bar monophonic MIDI sequence
- The VSTi used is u-he ACE on the default preset, but with
(a) "Stack" set to 8
(b) "Quality" set to "Accurate".
(c) No other plugins on the track - just the one instance of ACE.
- Duplicate that track until you start getting CPU dropouts during playback.
The results?
Live: 24 tracks is as far as I can go without issues. This makes sense since a 12-core machine with Hyperthreading = 24 virtual cores. Once I start playing a 25th track though, things grind to a RIDICULOUS halt - huge dropouts all over the place, the whole thing becomes unusable.
24 tracks is a very hard limit - it goes from sounding smooth to total stuttering garbage in the blink of an eye. This correlates to my anecdotal experience with other projects, where things all roll along very nicely to a point, when suddenly adding something innocuous (like an extra plugin here or a new track there) produces major dropouts all of a sudden.
Here is what OS X's CPU meter looks like:
This is at 24 tracks - when things sound smooth
This is at 25 tracks. Audio-wise there are massive dropouts, but notice 2 things. Firstly, CPU usage overall is still quite low. Secondly, it's actually lower than it was for 24 tracks. Why would that be the case? This is certainly weird.
Reaper: 64 tracks is where dropouts start to happen very occasionally, but it can go up to 70-ish tracks before it the dropouts really becomes problematic. By comparison, here's what OS X's CPU meter looks like when running with 64 tracks (when dropouts still aren't really happening majorly yet)
That's more like it. Reaper is using more of the CPU's power overall.
This really paints the situation of Live's level of multicore support, and performance overall - it is far from ideal. In terms of CPU performance, once you start pushing beyond Live's apparent limit - which seems to be equal to (for a non-Hyperthreading CPU) or double (for a Hyperthreading CPU) the number of physical cores in your machine - things go downhill incredibly quickly.
The thing to note is that when Live starts to produce dropouts and crackles, it's Live that's starting to crumble, not the machine or the operating system. Live is the limiting factor here. We all have very capable multicore machines these days and Live isn't equipped to take full advantage of them right now. Our expensive machines aren't being used to anywhere near their full potential by Live at the moment.
Better/more modern multicore support is absolutely my #1 wish for the next version of Live. I really hope they dramatically improve the situation.