Windows

Multimedia Class Scheduler in Windows Vista

When they designed Windows Vista, the Microsoft programmers were concerned about how high-quality multimedia content put a strain on the then-current computer hardware such as single-core processors, so they created a service called “Multimedia Class Scheduler” (MMCSS) that is constantly running in the background. This service will throttle your NIC (network card) and change CPU (processor) prioritization whenever an MMCSS-capable application such as Windows Media Player is running. This can drastically slow down your computer!!!

In their typical short-sightedness Redmond didn’t base this throttling on actual CPU/network usage. Today’s processors and high-speed networks can handle multiple tasks while playing multimedia, but MMCSS may still limit your other applications to only 10% of your available network bandwidth. 10% is not an exaggeration either as I’ve personally verified this level of throttling over a gigabit network running Windows Vista Ultimate 64-bit SP2 and Windows Media Player.

If you have a slower processor, limited amount of RAM, slow network, and/or run dozens of applications simultaneously, MMCSS may be a good thing. For the rest of us, though, this seriously hampers performance. (I was tearing my hair out trying to listen to music while running Dreamweaver.)

Microsoft has made some improvements to MMCSS, but the severe hard-coded throttling is still an issue. This has led to all manner of conspiracy theories regarding Microsoft’s implementation of DRM (copyright-protection) in Windows Vista and it’s alleged close ties to MMCSS, though there is little hard evidence to back up these claims. To make matters worse, disabling MMCSS is not easy because the “Windows Audio” service relies on it; stopping MMCSS means no more sound.

There are two ways to improve your system performance when playing music and movies under Windows Vista. First, if you have SP1 or later (you should be running SP2 by now), you can change the throttling level in the Windows registry. Second, you can disable MMCSS completely without losing sound if you tweak the registry first. The first option is safer, but you can only tweak the throttling to a certain point and you still have the MMCSS service running which you may not want if you are really sure your system doesn’t need it. The second option is the best solution for those of us with high-end machines, but it is uncertain what side-effects this may have with Windows Media Player (I use Winamp anyway, so it isn’t a concern for me).

Changing MMCSS Throttling Level

If you just want to increase performance while playing multimedia, this is the best approach. Please note that you may need to play with these settings as increasing network bandwidth too much may cause playback issues with some streaming media such as YouTube.

I am assuming you have not modified your Windows Start Menu to include the “Run” command.

  1. Press your Windows key (usually between your Ctrl and Alt keys to the left of your spacebar) and “R” to bring up the “Run” dialog.
  2. Type “regedit” in the “Open” dialog box and press “OK”.
  3. In the left-hand pane, navigate to the following registry key:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\
  4. In the right-hand pane look for a REG_DWORD value named “NetworkThrottlingIndex” (if it doesn’t exist, create it by right-clicking and choosing “New”).
  5. Double-click this value to edit it.
  6. Change the base from hexadecimal to decimal.
  7. The default value is “10” (decimal, or “a” in hex). You can increase this value in intervals of 10 up to “70” (decimal, or “46” in hex) to provide better network performance for other applications while playing multimedia.
  8. Click “OK” after making your changes.
  9. Now look for the REG_DWORD value named “SystemResponsiveness” (if it doesn’t exist, create it)
  10. Double-click and change to decimal again
  11. The default value is “20” (“14” hex), which allows for 20% of processor cycles to non-multimedia programs while MMCSS is active. I’m not sure if this has to be done in intervals of 10 also, but you can take it all the way up to “100”. Setting it to the max essentially disables the CPU-throttling feature of MMCSS without disabling the service itself and still keeping the network bandwidth throttling to improve YouTube and other streaming content (this is the default for Windows 2008 Server in fact).
  12. Click “OK” after making your changes and close the Registry Editor.
  13. Restart your computer to see the results. If you experience choppy sound, try lowering one or both of these values a bit until you find the right balance.

If you followed these steps and found that video and sound are perfectly fine even with these values at their highest, then chances are good your computer doesn’t even need MMCSS at all.

Completely Disabling MMCSS

First, let me stress again that disabling MMCSS can cause serious audio and video problems (such as crackling) on many systems. Changing the throttling level is a better solution for those without very high-end systems and above-average Internet bandwidth.

I am assuming you have not modified your Windows Start Menu to include the “Run” command.

  1. Press your Windows key (usually between your Ctrl and Alt keys to the left of your spacebar) and “R” to bring up the “Run” dialog.
  2. Type “regedit” in the “Open” dialog box and press “OK”.
  3. In the left-hand pane, navigate to the following registry key:
    HKEY_LOCAL_MACHINE\SYSTEM\
    CurrentControlSet\Services\Audiosrv
  4. In the right-hand pane find the value named “DependOnService” (if it doesn’t exist, it should, but if you are sure it doesn’t then ignore the following steps until we get to the point of disabling MMCSS).
  5. Double-click this value and delete the “MMCSS” line. Make sure to leave everything else there!
  6. Click “OK” after making your changes and close the Registry Editor.
  7. Important: restart your computer for these changes to take effect.
  8. Press the Windows key and “R” again to bring up the “Run” dialog.
  9. Type “services.msc” in the box and click “OK”.
  10. Scroll down the list of services until you find the “Multimedia Class Scheduler”.
  11. Double-click on the service to open its properties.
  12. Click the “Stop” button and wait for the service to stop.
  13. Change the “Startup type” from “Automatic” to “Disabled”.
  14. Click “OK” then close the Services MMC window.
  15. Now play some music and videos and so forth to test these new settings. If you experience crackling or choppy video, you may want to go back and change the service to “Automatic” again (no need to undo the registry changes, as it is not needed for both the Windows Audio service and MMCSS for both to function properly).

Sources:
http://msdn.microsoft.com/en-us/library/ms684247%28VS.85%29.aspx
http://support.microsoft.com/kb/948066
http://blogs.zdnet.com/Ou/?p=711
http://blogs.zdnet.com/hardware/?p=726
http://blogs.technet.com/markrussinovich/archive/2007/08/27/1833290.aspx
http://technet.microsoft.com/en-us/magazine/2007.02.vistakernel.aspx#2

Leave a Reply