Slow network file copying / moving / deleting in Windows Vista when playing audio (MMCSS)
File copying in Vista is, well, slow. I’m pretty sure I’m not the only one who has been sitting there wondering what exactly Vista is doing while it spends 5 minutes “calculating the time remaining” to copy half a dozen files.
Before you trash Vista
Install these updates:
(these updates were on Microsoft’s site for a good while but were pushed out to Windows Update on 28th August 2007)
For most people with normal setups, you should find that gives a breath of fresh air to your computer’s performance, especially if you use a laptop.
Slow file copying over the network
(I’m only going to deal with audio here but everything in the article applies equally to video)
Are you listening to music? You may have read one of the genius features of Vista is that it lets you stream audio and video smoothly over your LAN or wireless network even when it’s under load. That’s cool… unfortunately it does that by throttling all of the rest of your network traffic and giving audio and video absolute priority.
Vista only throttles the connection when you’re actually running an audio application. Try copying a large file over your network with and without music running to see if you’re affected by this. Here are my shocking figures for a 265MB file copy over Gigabit Ethernet, with and without Winamp playing:
Vista to network – 8 seconds without Winamp, 21 seconds with Winamp
Network to Vista – 14 seconds without Winamp, 41 seconds with Winamp
It gets better. There are some bugs, and one obvious design flaw in the throttling system:
- There is a hard-coded limit of 10,000 packets per second for non-AV traffic. This means the faster your connection is, the harder you’re gonna get hit as you can hit 10,000 pps much more easily on GigE than 100Mbit networks.
- Each additional logical network adapter cuts the maximum packets per second rate due to a bug in Vista, for example if you have two LAN cards, the maximum goes down to 8,000. Cut the rate further for each additional adapter; if you’re running a wireless card and Bluetooth as well, those count as network adapters too.
- The rate limit is applied globally, not per adapter.
The real solution is to wait for a patch from Microsoft because the steps below will significantly reduce the quality of your AV experience on Vista, and may leave you with skipping and clicking while you listen to music in some scenarios.
- Open the registry editor – press Start+R, type
regedt32and press Enter.
- Navigate to
- Open the key
DependOnServiceby double-clicking it
- Remove the last line which says
MMCSSand click OK. Close the registry editor.
- Open the Services window (Control Panel, System and Maintenance, Administrative Tools, Services)
- Scroll down to the service called Multimedia Class Scheduler, right-click on it and choose Properties.
- Change the Startup type to Disabled and click OK. Do not try to stop the service running.
The Multimedia Class Scheduler (MMCSS) is the service responsible for throttling the connection, following these steps disables it and takes it out of the equation. Windows Audio (the service that manages audio playback) claims to be dependent on MMCSS but really it isn’t; altering the registry key as above removes the dependency from Windows Audio’s dependency list, so that MMCSS won’t try to start when Windows Audio starts when Windows boots up.
After performing these steps, my file copy speeds where the same with and without Winamp running – 8 seconds to copy 265MB from Vista to the network, and 14 seconds from the network to Vista (the remote machine was running Windows Server 2003).
The Register’s coverage of the MMCSS issue
Larry Osterman’s blog at MSDN: Windows Vista Sound causes Network Throughput slowdowns – how Microsoft found out about the problem and what they’re doing about it
Mark Russinovich’s technical blog: Vista Multimedia Playback and Network Throughput – read here for a thorough technical report on the issue
- Change to Twitter account
- The Future of my Blog: I’m Still Alive
- LightSwitch for Games Part 4: OData Access from C++ Client Code with the C++ REST SDK
- How to statically link the C++ REST SDK (Casablanca)
- Simple2D 1.13 now available
- Final Wishes: Crowdfund Update
- Dying with M.E. as a software developer
- 2D Platform Games Part 12: A Framework for Interactive Game Objects
Top Posts & Pages
- Printing numbers in binary format in C++
- Tutorial: How To Fix WMI Corruption
- 2D Platform Games Part 1: Collision Detection for Dummies
- XInput Tutorial Part 1: Adding gamepad support to your Windows game
- C++11: Using std::unique_ptr as a class member: initialization, move semantics and custom deleters
- PHPCron: Running scheduled tasks from PHP on a web server
- Dying with M.E. as a software developer
- Coding Challenge: Write Asteroids in 10 hours or less
- Introduction to Multi-Threaded, Multi-Core and Parallel Programming concepts
- Katy's Code
- Blog Updates (10)
- Bluetooth (2)
- Filesystems (3)
- NTFS (3)
- IT Industry (3)
- Learning To Code (2)
- Media (5)
- Operating Systems (15)
- Programming (67)
- Science (5)
- Software (18)
- Video Games Industry (57)
- July 2015 (2)
- April 2014 (2)
- March 2014 (2)
- January 2014 (3)
- November 2013 (3)
- October 2013 (1)
- August 2013 (11)
- July 2013 (2)
- May 2013 (3)
- April 2013 (1)
- March 2013 (4)
- February 2013 (11)
- January 2013 (14)
- October 2012 (4)
- September 2012 (7)
- June 2012 (3)
- May 2012 (12)
- October 2010 (3)
- September 2010 (2)
- June 2010 (10)
- May 2010 (6)
- April 2010 (16)
- March 2010 (11)
- February 2010 (4)
- October 2008 (2)
- September 2008 (2)
- March 2008 (2)
- February 2008 (2)
- January 2008 (3)
- December 2007 (1)
- September 2007 (3)
- August 2007 (1)
- July 2007 (1)
- June 2007 (2)
- April 2007 (1)
- February 2007 (3)
- November 2006 (1)
- October 2006 (3)
- September 2006 (1)
- July 2006 (3)