As of Windows 10, the amount of real-time processing threads with Multimedia Class Scheduler Service (MMCSS) priority is limited to 32 per process - 4 of which are blocked by non-audio-threads already running.
In short, the outcome of this is that on systems built around a CPU with more than 14 logical cores*, processing threads exceeding this amount will be carried out as non-real-time (like UI-threads), introducing drop-outs and performance issues.
As long as no fix is provided on the operating system side, the following work-around will avoid performance issues and dropouts:
- Option 1: Downgrade to Windows 8.1
- Option 2: Limit the amount of cores used by Cubase/Nuendo to 14
There are mainly two ways of limiting the amount of cores:
Limit the amount of logical cores to 14 in your BIOS/UEFI (if applicable, please consult the motherboard documentation for details)
Limit the amount of cores used by the application's engine, here is how-to:
- Close all applications
- Go to e.g. C:\Users\<username>\AppData\Roaming\Steinberg\Cubase 9_64
(or C:\Users\<username>\AppData\Roaming\Steinberg\Nuendo 7_64) or paths that reflect the actual software/version you have installed
- Copy the file "audioengine.properties" you can download below and paste it inside the folder
Lastly, at the end of the article you can download a tool that tests the amount of threads used by your machine/OS.
How to use it:
- Download the "mmcss-test.exe"
- Double-click it to run it (by default, this will test 128 threads)
It is possible to use this tool to test any amount of threads:
- Type run in Windows Search
- Click on "Browse"
- Locate the mmcss-test.exe (e.g. on your desktop)
- Add a space character and the amount of threads (e.g. C:\Users\<username>\Desktop\mmcss-test.exe 512)
You can use it to test the limitation as well as to test that limiting the amount of cores used has been applied correctly. The tool will output the amount of MMCSS priority threads and the amount of threads which failed to set MMCSS priority.
We apologise for finding this issue late and for taking additional time to discuss possible solutions prior to informing our users.
*logical = combining physical cores with Hyper-threading/SMT (simultaneous multi-threading) technology to two logical cores as used on current Intel/AMD processor generations