Cubase 10, Windows 10 and multi-core (14+ cores)

Hello, sorry for the (forced) absence.
Thanks to all who posted their experience - feedback pretty much matches our in-house tests.

@Jorge: I’d recommend to get in contact with support - if it’s just one project, it should be relatively easy to find out.
(Spanish support is a few metres away from me, by the way :slight_smile: )

1809 didn’t change anything about MMCSS as far as I’m aware, but i wouldn’t be surprised if the registry key was wiped.
Cubase 10 just addresses resources differently and spawn threads in a more complex way, it doesn’t really do something ‘different with MMCSS’.

The new engine works and addresses resources in a very different way, but it’s way to complex to be explained here and I frankly don’t have full information myself yet. Also, the engine behaviour can be adapted to particular cases, if needed.

But:
– No, Cubase does not throttle anything
– No, it does not limit the amount of cores used in any way
– Plugins that require high-speed core speed will most likely continue to do so (load spread does not depend on Cubase alone)
– Cubase 10 can make use of as many logical threads as available, but it should be mentioned again that not all CPUs are designed for this kind of work-load: thread-synchronisation and amount of cores, base-clock speed vs. amount of cores, instructions sets and CPU architecture all need to be taken into account (but there are recents tests from DAW builders that hints at the fact that this ‘trend’ is changing)

(Microsoft provided us with information and the registry work-around, but the long-term solution Pete talks about is something totally different to this and requires an engine re-write with different APIs)

Hyper-threading needs to be reacivatend in your BIOS, usually in the CPU Frequency / Advanced section.
That CPU does NOT require the registry key, so hopefully you didn’t apply any…

Unlikely - the new behaviour is meant to improve performance with more than 14 cores.

Be careful with Waves. Some of them do not like Hyperthreading…

+1

Please someone from Steinberg, who has knowledge, clarify that this CPU will work to full potential with Cubase.

As I wrote above, Cubase 10 addresses resources differently, so the limitation to 14 logical cores is now gone.
Theoretically, any CPU can be used, and if issues arise the engine can be further tweaked.

But not all architectures are created equal or are tailored to a certain kind of processing - 2990WX at full potential? Difficult to say, honestly, the same CPU might work differently, even just switching the motherboard.
On the SCAN main page, http://www.scanproaudio.info/, you currently find an article about Cubase 10 directly on the homepage, with pretty detailed info on the 2990WX performance and benchmarks against other chips.
It’s really worth a read, particularly on the perfomance and overhead loss, which according to their test isn’t DAW-specific.
Also interesting to read about the stable OC figures.

Thanks for the link.

Since this “improvement” pretty sure does no more than automatically determining the max. possible count of realtime threads, instead of reading it from a file like audioengine.prop:
Why do you bother all the users with huge “beta” trials then? It would be more convenient for all, to provide a small tool/view which shows the auto detected count on the GUI to report here.

(Still a bit pissed on the answer of Steinberg support one year ago, I should myself contact Microsoft to ask for removal of the MMCSS limitation and that Steinberg can do nothing about it. I am sure your voice is heard when you contact MS, at least better than mine)

As I wrote in the OP, the way Cubase 10 addresses resources and spawnes threads is completely re-designed - NOT just automatic detection of the max threads.

Thanks for clarifying.
Are those new techniques and complete re-design then disabled if something is specified in the audioengine.prop file?
Because otherwise I do not really get what you are trying to get feedback on, considerig thread limit of the OS stays same.
Should be same for all kind of hardware - or are those improvements only active if the CPU could hit the limits?
Seems to be irrelevant to me HOW Cubase spawns threads, as long it does not spawn more than the limit of realtime threads.

But I have to admit I have very limited insight on this - and is more or less off topic.

Still I would prefer if Cubase and MS would adress the root cause itself or at least provide a timeline for it, to allow benefits of recent of multi core processors.

The feedback I’m gathering is to get more info from users I may not be in contact with and make sure the improvement is positively affecting as many systems as possible and that it matches our expectations.

It is general and always active: by all means a different design.
The improvements should be more visible in two main cases: 1. high core-count, and 2. low latency on multi-core machines (but the processing overhead to sync the threads on the OS side is not affected, of course).

It is very relevant, as the way Cubase spawned threads previously is what made the MMCSS limitation exacly 14 (if Cubase didn’t spawn prefetch threads at all, which is not possible and just an example, the limit would have been 28).

Microsoft won’t change it, as this would have ‘system-wide performance implications’ (quoting Pete Brown here) and as mentioned previously “the long-term solution Pete talks about is something totally different and requires an engine re-write with different APIs”, and this is not something that can be done quick and without very extensive testing.

Thanks for taking the time, this is useful (interesting and motivating) information.
I will have a closer look whether the change in strategy has effect on my projects (i9 7900X).

Is there any way to influence/reduce amount of prefetch threads, e.g. by structuring the project/busses/channels in a certain way?

Be warned about the architecture of AMD’s latest multi-die CPUs. Scan Pro Audio has already shown how this configuration is not ideal for real-time audio applications. The inter-core data transfer in the interposer presents delays compared to on-die and essentially results in NUMA like a multi-socket workstation. The same reason multi-socket is not always ideal for pro audio. See the articles:

http://www.scanproaudio.info/2017/08/14/first-look-at-the-amd-threadripper-1920x-1950x/
http://www.scanproaudio.info/2018/08/24/threadrippers-2990wx-2950x-on-the-bench-just-a-little-bit-of-history-repeating/

Fabio, are you saying that this “engine re-write with different APIs” is what we got with Cubase 10 or is this some interim step to get to that point?

No and no. This is what needs to be done, to fix the whole thing (or better said: this had to be started already very long time ago).
Apparently decision to do so is still not taken yet - C10 only tries to improve on the current problem.

No. Cubase Pro 10 is capable of spawning prefetch threads in different amounts, let’s say dynamicaly… or asynchronously.
It’s possible to define it in a different way, via the switches I previously mentioned. However, we’re at the point where I can’t provide more details.
Special cases should be individually discusses with Support via the proper means.

Fabio, does this mean that we can expect new improvements related to multi-core in the coming Cubase 10 updates?

Hi Jorge,

no, the fine tuning I was referring to is already in place, but we (at support) are waiting for a more detailed documentation on how to actually configure the switches correctly.
This does not exclude further improvements, that’s something that needs to be done constantly :slight_smile:

Hi,

so I did some tests with my recent project (started in Cubase 9.5).
I could not observe any difference b/w C9.5 and C10 for this project, wrt dropouts/overload.
Overloads at same time in both versions (skips Audio and or automation in that case)

  • i7900x, 10 core HT, GTX970, Win10 1809, SSD, Cubase10, RME babyface, all latest drivers/versions
  • Project is loaded, will only run hassle free with AsioGuard High and 1024 samples buffer
  • will not work with AG low/mid
  • Several instances of Omnisphere2, Avenger, Geist, Effects on every track, some grouping, lots of sidechaining (to trackspacer, pro-c2)
  • Load meter is 100% for average, ~0% for realtime, disk spikes
  • Project plays (fine) without crackles (very few sometimes) in that state. If further things are added, it will show audio dropouts in both Cubase versions

Cheers

How much is the cpu load with this project?

Cubase meter shows ~100% Average load continously, and 50-60 RT load when playing back
10 (20) Cores seem to be working b/w ~20-40% each in task manager


I made another weird observation: freezing one single track (Omnisphere 2.5) in this project does the opposite of easing the resources. The project becomes unplayable (only dropouts, i.e. will not even playback something, meters only flicker). Maybe any hints on this?

This could make sense only if you used a hard drive from the 90s :smiley: