Resolution: Description:
============
The Multimedia Class Scheduler service (MMCSS) enables multimedia applications to ensure that their time-sensitive processing receives prioritized access to CPU resources. This service enables multimedia applications to utilize as much of the CPU as possible without denying CPU resources to lower-priority applications.
One of the MMCSS roles is to ensure smooth playback of multimedia, essentially by boosting the priority of the playback thread into the realtime range and protect it from CPU interrupts, in particular from networking. The effect of this is that when multimedia playback starts the NDIS device driver (which sits between the network adapter driver and the TCP/IP driver) is throttled to pass along at most 10 packets per millisecond.
The throttling can have an adverse effect on the RVD that will subsequent report packet retransmissions requests whenever a lot of data is sent to the machine, the previous causing a delay on the normal flow of messages and creating an increase in retransmissions requests in the network. The above can be noticed in C# applications playing frequent sounds being run under MMCSS.
Environment:
==========
Windows Vista, Windows 7
Symptoms:
=========
Delays and decrease performance in messaging normal rates and subsequent high RVD retransmission requests.
Cause:
=====
Windows Vista and later implemented something called theMultimedia Class Scheduler service (MMCSS) that is intended to make all multimedia playback as smooth as possible. Since multimedia playback relies on hardware interrupts to ensure smooth playback, any competing interrupts will cause problems.
One of the major hardware interrupt sources is network traffic. Because of this, Microsoft decided to throttle the network traffic when a program was running under MMCSS.
The network throttling index can be controlled from the following registry key; the default is 10 packets per millisecond:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\NetworkThrottlingIndex
Because multimedia programs require more resources, the Windows networking stack implements a throttling mechanism to restrict the processing of non-multimedia network traffic to 10 packets per millisecond.
The throttling will come into effect only when you are running multimedia programs that are time sensitive. However, this throttling mechanism can potentially cause a decrease in network performance during the active multimedia playback period. This decrease in performance is likely to occur only on high speed networks that are saturated to maximum capacity.
Resolution:
=========
The limit (10 packets per milisecnd) can be configured via the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile registry key by modifying the NetworkThrottling Index key.
By default, the value for the NetworkThrottlingIndex registry entry is set to 10. When the NetworkThrottlingIndex registry entry does not exist, the behaviour resembles the default behaviour. Network throttling can be completely turned off by setting the value to FFFFFFFF (hexadecimal). You must restart the computer after you make a change to the value of the NetworkThrottlingIndex registry entry.
Name : NetworkThrottlingIndex
Value type : DWORD
Value data : From integer 1 through integer 70 (Decimal) (Decimal)