Jump to content

MMCSS when to use?


micv

Recommended Posts

Multimedia applications use the "Multimedia Class Scheduler" service (MMCSS) to ensure prioritized access to CPU resources, without denying CPU resources to lower-priority background applications. This is a mechanism to allow realtime applications to have a degree of guaranteed performance even under system load from other background processes. This is on by default in CbB and when enabled all engine threads are marked as prioritized for Pro Audio. We also support custom MMCSS Task profiles.

If you want to read more about it here is a thread from the old forum.

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

9 hours ago, Noel Borthwick said:

Multimedia applications use the "Multimedia Class Scheduler" service (MMCSS) to ensure prioritized access to CPU resources, without denying CPU resources to lower-priority background applications. This is a mechanism to allow realtime applications to have a degree of guaranteed performance even under system load from other background processes. This is on by default in CbB and when enabled all engine threads are marked as prioritized for Pro Audio. We also support custom MMCSS Task profiles.

If you want to read more about it here is a thread from the old forum.

Would that really make much of a difference when the only program running is the DAW?

Link to comment
Share on other sites

Assuming the CbB knows to give the system some CPU for system critical background process?

I typically turn off network, virus, the internal sounds process when running DAW.  Those in my experience have interfered with DAW.

Updated to the latest version, been playing with the setting and so far I can't really tell if there is a different with MMCSS or not.

Link to comment
Share on other sites

Then there likely is no major difference for your use.  If you run a browser or other activity in the background and stress the system by activity you may notice that with MMCSS on there are fewer interruptions.
In simple terms you can think of MMCSS as a layer of extra insurance against dropouts. Its OK to leave on even if you don’t have obvious issues which is why its recommended as the default in Windows audio applications. Windows 10 has improved over earlier OS’s where there are fewer contests for time critical threads but every system is different and has different processes running.

  • Like 2
Link to comment
Share on other sites

So what is the general consensus in XXI century, are we still supposed to set the priority to background processes? I was doing it since 90-ties and never looked back. That was always one of just few tweaks first done in each next Windows build for me.

Link to comment
Share on other sites

44 minutes ago, Noel Borthwick said:

You have never needed to do this. Its folklore propagated by some misinformed people based on very specific cases.

Glad nobody told me over the years or else it could have stopped working for me. :D 

 

And I think I got it from some well regarded source like SOS etc, back then.

Edited by chris.r
Link to comment
Share on other sites

3 hours ago, Noel Borthwick said:

You have never needed to do this. Its folklore propagated by some misinformed people based on very specific cases.

interesting as we speak, there is another active thread, and I copy the link here.  It still said about background process.  folklore is hard to squash, I suppose 😀

https://www.blades.technology/music/daws-sonar-and-studio-one/three-tips-to-optimize-pc-for-daw-use

"3. Configuring the computer to prefer Background Processes over Programs.  This one made the biggest "one item" difference."

Link to comment
Share on other sites

As I said some people have found it to be useful in specific cases. Maybe certain hardware or drivers work better with it. From a technical point of view I see optimizing for background potentially problematic since it allows the OS to favor other programs. I wouldn't want Windows favoring the web browser or some random process over the current active process. So YMMV. I have never turned this on for any DAW I have had in the last 20 years and have never had an issue.

Link to comment
Share on other sites

I remember reading that someone called an audio driver a background process and that way justifying prioritizing background processes. My Ploytec ASIO driver has it's own setting for how much I want to prioritize it so I should have nothing to loose changing back to apps.

Link to comment
Share on other sites

  • 1 year later...

Sorry to necro this thread but I am chasing down some latency problems that shouldn't be there and I noticed this line from Noel:

"This is on by default in CbB and when enabled all engine threads are marked as prioritized for Pro Audio. We also support custom MMCSS Task profiles."

I am running Version 2022.11 (Build 021,64 bit) and just noticed MMCSS was NOT enabled by default. Nor was "64 bit Double Precision Engine" nor was "Plug-In Load Balancing".

So now I am wondering what else should be turned on or off to maximize the performance of my system. Here are the Specs and what's been done so far:

AMD 5950x CPU

NVIDIA RTX 3090 GPU

64GB Corsair Dominator RAM

3x Sabrent Rocket 4.0 NVME PCIE 1TB slotted into the motherboard

Motherboard is Gigabyte Aorus X570 Xtreme revision 1.1 with thunderbolt header, with Titan Ridge 2.0 PCIE card running Thunderbolt 3

Audio interface is Presonus Quantum 2626 Thunderbolt 3

I have turned off Auto C States in BIOS, also turned off AMD Cool N Quiet in BIOS. In Windows 10 x64 I have disabled HPET and set power plan to maximum performance. In NVIDIA control panel I have set to prefer maximum performance and set PhysX config to use GPU only not CPU.

In CbB I have now enabled "64 bit Double Precision Engine" "Use Multiprocessing Engine" "Plug In Load Balancing" "Use MMCSS".

 

What else can I do to improve performance? Thanks in advance!

 

Link to comment
Share on other sites

MMCSS is always on by default. What changed is that we no longer turn on the ASIO MMCSS flag, because some drivers misbehaved with it.
Load balancing is off by default since again some plugins don't do well with it.
64bit mixing has a trade off since it takes some additional bandwidth, so its not enabled by default.
Multiprocessing should always be enabled.
 

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

  • 3 weeks later...

Hey folks, it's the member formerly known as TreeFight.  My 700 or so posts somewhere in the ether...

This post is about MMCSS, UAD drivers, and Windows, and settings for all w/in CbB: Another Question about MMCSS and ASIO/WDM driver (that may seem nonsensical, but as far as I can tell, the drivers at issue - UAD for Apollo, Arrow, etc. - are called WDM drivers but run in ASIO in CbB.  Not really my issue here, but wondering if the UAD driver can use WDM for Windows sounds and ASIO for CbB (?)  Could never figure out why they call them WDM if they're mostly used in ASIO.

I arrived at the above question after reading enough to, at the outset, enable (leave enabled) MMCSS in CbB, but I never quite figured out whether to check the box below, which as I understand it, will attempt to enable MMCSS in the third-party driver (because it must be enabled in both the driver and CbB and I guess most ASIO control panels, like UADs, don't have an option to enable/disable MMCSS).

I've also read that MMCSS actually has to be programmed into an ASIO driver (so it's only an "option" where it's coded in already).  Of course, there's nothing about MMCSS anywhere in anything UAD (driver control panel, instructions, forums, website).  I'm wondering a couple of things:

1.  Do UAD drivers "use"/include/whatever MMCSS?  Is there a way to find out?  Can CbB turn it on "for" the UAD driver?  I've experimented with various settings and there isn't much of a difference no matter what I do, but it's hardly scientific.  If they do use MMCSS, does that mean that second box should be checked or unchecked (the one that purports to turn on MMCSS in your driver)?  Maybe there's a good example of a driver that can take advantage of MMCSS and someone could explain how they figured out how to set it up (?)  I find it astonishing that there is so little clear information on this around.

2.  As to the UAD Apollo/Arrow driver specifically, in CbB should I choose ASIO or something else (ASIO/WDM - I think that's a choice)?  I've always just chosen ASIO.

3.  Again as to these drivers (being used w/a T3 Octo satellite BTW), and being WDM/ASIO, does it matter if they are Windows' default drivers?  I disabled my Nvidia and local PC audio drivers out of habit, so Windows took them for default, but I only use them with CbB.  but I could enable one and make it Windows default audio device.  I ask because some manufacturers (RME) advise you to make sure your audio driver is NOT the same as Windows default.  

4.  MMCSS/Performance meters:  I read in the CbB manual that you can see if MMCSS is being used by checking the performance monitor and if it says something like "time critical... (15)" then MMCSS is NOT PROPERLY in use.  All I remember is the "time critical" is gone if MMCSS is being used.  No matter what options I select, the performance monitor always has the "time critical."  Even with all MMCSS options disabled, the audio notification never changes.

I apologize for the long, detailed post; as usual I try everything  before going to the source - here!  

If someone is using a UAD Arrow (or Apollo) and believes they have optimized driver settings (especially re: WDM/ASIO and MMCSS settings), please do share.  

Thanks, and I look forward to re-engaging with my old (and new) friends on these boards!

Regards,

Chris

Link to comment
Share on other sites

17 hours ago, Christopher Hunt said:

This post is about MMCSS, UAD drivers, and Windows, and settings for all w/in CbB: Another Question about MMCSS and ASIO/WDM driver (that may seem nonsensical, but as far as I can tell, the drivers at issue - UAD for Apollo, Arrow, etc. - are called WDM drivers but run in ASIO in CbB.  Not really my issue here, but wondering if the UAD driver can use WDM for Windows sounds and ASIO for CbB (?)  Could never figure out why they call them WDM if they're mostly used in ASIO.

according to UAD, WDM and ASIO drivers are different - so it would be important to select the correct one - it sounds like you select the ASIO driver in CW but use the WDM version for Windows. maybe set the ASIO on for both?

Using Windows WDM System Audio with UAD Hardware – Universal Audio Support Home (uaudio.com) https://help.uaudio.com/hc/en-us/articles/360051064291-Using-Windows-WDM-System-Audio-with-UAD-Hardware

as far as UAD and MMCSS -- probably a good question for their tech support.

Link to comment
Share on other sites

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

This post is about MMCSS, UAD drivers, and Windows, and settings for all w/in CbB: Another Question about MMCSS and ASIO/WDM driver (that may seem nonsensical, but as far as I can tell, the drivers at issue - UAD for Apollo, Arrow, etc. - are called WDM drivers but run in ASIO in CbB.  Not really my issue here, but wondering if the UAD driver can use WDM for Windows sounds and ASIO for CbB (?)  Could never figure out why they call them WDM if they're mostly used in ASIO.

@Christopher Hunt Technically ASIO is a wrapper on top of the OS native driver model which is WDM. i.e an ASIO “driver” vendor must also ship a WDM driver for Windows itself to communicate with the device. There is no other way.
So every device that has an ASIO driver needs to support Windows using the device at the SAME time as a DAW uses it via ASIO.
Some devices do this well and others handle it poorly. For example Windows may be using the device at one sample rate while the DAW is using it at another. A well behaved driver handles all these scenarios transparently.

 

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

I arrived at the above question after reading enough to, at the outset, enable (leave enabled) MMCSS in CbB, but I never quite figured out whether to check the box below, which as I understand it, will attempt to enable MMCSS in the third-party driver (because it must be enabled in both the driver and CbB and I guess most ASIO control panels, like UADs, don't have an option to enable/disable MMCSS).

I've also read that MMCSS actually has to be programmed into an ASIO driver (so it's only an "option" where it's coded in already).  Of course, there's nothing about MMCSS anywhere in anything UAD (driver control panel, instructions, forums, website).  I'm wondering a couple of things:

All MMCSS does is set an elevated priority for the driver thread. This tells Windows to not interrupt the driver when doing other tasks which is useful when operating at low latencies. Cakewalk has supported MMCSS from day one when it was made available in Windows. At the time it was not part of the ASIO specification at all and almost no drivers supported it directly except a few like RME. So Cakewalk would set the drivers thread to MMCSS mode automatically to benefit from this (controlled by the MMCSS flag). This setting however was for both Cakewalk as well as the driver, until our recent release where we made it granular so it could be independently switched off for the driver. The reason for this was to avoid certain (buggy) drivers that caused problems when forced to MMCSS mode. The ASIO specification now states that ALL drivers should run in MMCSS mode but its still widely not respected. Pretty much the wild west out there :)

 

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

1.  Do UAD drivers "use"/include/whatever MMCSS?  Is there a way to find out?  Can CbB turn it on "for" the UAD driver?  I've experimented with various settings and there isn't much of a difference no matter what I do, but it's hardly scientific.  If they do use MMCSS, does that mean that second box should be checked or unchecked (the one that purports to turn on MMCSS in your driver)?  Maybe there's a good example of a driver that can take advantage of MMCSS and someone could explain how they figured out how to set it up (?)  I find it astonishing that there is so little clear information on this around.

Its not surprising because its an internal option that end users shouldn‘t need to worry about. In reality that isnt the case :)
Most drivers don’t have a checkbox for this so its very hard to find out if the driver supports it without using tools like Process Monitor and even so its hard to find the driver thread most of the time. In Cakewalk I added a status if you hover over the performance module that shows the thread priority. If its 18 or higher its typically means that the driver is in MMCSS mode. However the technique I use to detect it isnt foolproof (Microsoft doesnt publish a way to check this!)

 

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

2.  As to the UAD Apollo/Arrow driver specifically, in CbB should I choose ASIO or something else (ASIO/WDM - I think that's a choice)?  I've always just chosen ASIO.

Always choose ASIO inside the DAW.

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

3.  Again as to these drivers (being used w/a T3 Octo satellite BTW), and being WDM/ASIO, does it matter if they are Windows' default drivers?  I disabled my Nvidia and local PC audio drivers out of habit, so Windows took them for default, but I only use them with CbB.  but I could enable one and make it Windows default audio device.  I ask because some manufacturers (RME) advise you to make sure your audio driver is NOT the same as Windows default.  

If you can use a different device for windows its preferable since it eliminates one common problem from the equation, since some drivers don’t play well when used simultaneously. I haven’t had issues with RME being used by Windows and Cakewalk simultaneously however.

On 1/25/2023 at 4:17 PM, Christopher Hunt said:

4.  MMCSS/Performance meters:  I read in the CbB manual that you can see if MMCSS is being used by checking the performance monitor and if it says something like "time critical... (15)" then MMCSS is NOT PROPERLY in use.  All I remember is the "time critical" is gone if MMCSS is being used.  No matter what options I select, the performance monitor always has the "time critical."  Even with all MMCSS options disabled, the audio notification never changes.

See my above notes. The technique I use isn’t perfect so if the driver has actually set it to MMCSS sometimes we just get a failure code when trying to set it to MMCSS but I can’t conclusively know if its actually running in MMCSS without running process monitor,

 

 

  • Like 2
Link to comment
Share on other sites

since i haven't spent much time on the internals of audio programming on Windows, this last post sort of sent me down the rabbit hole: https://learn.microsoft.com/en-us/windows-hardware/drivers/audio/low-latency-audio  & https://learn.microsoft.com/en-us/windows-hardware/drivers/audio/

🙂 lol.

one note: if the ASIO driver depends on the lowly WDM then it explains why i can use the ASIO4ALL driver (which uses WDM) for very low latency captures (<5ms) vs ~5ms on WASAPI Exclusive or Shared (my Behringer Q802USB doesn't have a native ASIO like my UMC1820 does which has ~2ms), and after cleaning up all the other drivers (extraneous from Intel, Real, Magix, FL, Avid, Ableton etc  -- seems everyone has a driver) off my laptop system, and installing my Behringer UMC and ASIO4ALL  drivers fresh, i have no issues with audio on my laptop regardless of mode (other than i have to switch off the ASIO4ALL once i record something and go back to my normal WASAPI or UMC ASIO settings - takes just a minute of time to close the project, switch, reopen).

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...