Sometimes the expectations of our customers mystify me.
One of the senior developers at Microsoft recently complained that the audio quality on his machine (running Windows Server 2008) was poor.
To me, it’s not surprising. Server SKUs are tuned for high performance in server scenarios, they’re not configured for desktop scenarios. That’s the entire POINT of having a server SKU – one of the major differences between server SKUs and client SKUs is that the client SKUs are tuned to balance the OS in favor of foreground responsiveness and the server SKUs are tuned in favor of background responsiveness (after all, its a server, there’s usually nobody sitting at the console, so there’s no point in optimizing for the console).
In this particular case, the documentation for the MMCSS service describes a large part of the root cause for the problem: The MMCSS service (which is the service that provides glitch resilient services for Windows multimedia applications) is essentially disabled on server SKUs. It’s just one of probably hundreds of other settings that are tweaked in favor of server responsiveness on server SKUs.
Apparently we’ve got a bunch of support requests coming in from customers who are running server SKUs on their desktop and are upset that audio quality is poor. And this mystifies me. It’s a server operating system – if you want client operating system performance, use a client operating system.
PS: To change the MMCSS tuning options, you should follow the suggestions from the MSDN article I linked to above:
The MMCSS settings are stored in the following registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile This key contains a REG_DWORD value named SystemResponsiveness that determines the percentage of CPU resources that should be guaranteed to low-priority tasks. For example, if this value is 20, then 20% of CPU resources are reserved for low-priority tasks. Note that values that are not evenly divisible by 10 are rounded up to the nearest multiple of 10. A value of 0 is also treated as 10.
The MMCSS settings are stored in the following registry key:
This key contains a REG_DWORD value named SystemResponsiveness that determines the percentage of CPU resources that should be guaranteed to low-priority tasks. For example, if this value is 20, then 20% of CPU resources are reserved for low-priority tasks. Note that values that are not evenly divisible by 10 are rounded up to the nearest multiple of 10. A value of 0 is also treated as 10.
For Vista, this value is set to 20, for Server 2008 the value is set to 100 (which disables MMCSS).
G. stoynev: Why should a server be tuned in the same way a client is? After all, they service different workloads.
Larry, why don't you answer these:
1. Why there are so many threads with their priority way too high considering what they are doing is not important to the user?
2. Why quantum isn't down to 1, 2, or 5 ms depending on the CPU performance instead of default 20ms leftover from 8MHz CPU era?
3. Why is it that when I set boot.ini switch (/TIMERES) to get 1ms timer resolution I still get 15.6ms?
4. Why isn't 32-bit XP using PAE and AWE to access and utilize unmanaged memory above 3GB? It is certainly doable (take a look at RamDisk Plus).
"Why isn't 32-bit XP using PAE and AWE to access and utilize unmanaged memory above 3GB?"
Because it has an official memory limit of 4GB. Pre-XP SP2, it was a *physical memory* limit, post-SP2 it is a *physical address space* limit.
Anyway, copying from a comment I posted on Raymond Chen's blog:
"BTW, I was told by Geoff Chappell that this page will be available in the future that will have more info on this issue:
(currently it is a 404 page)"
BTW, Geoff Chappell told me this page will in the future have more info on PAE/NX and client versions of Windows:
(currently it is a 404 page)
BTW, sorry for posting part of a comment twice, the first one did not appear immediately.
With Server 2008, you CAN rip the UI right off of the OS. Great for Hyper-V hosts and a multitude of dedicated machines. Not only does it reduce overhead, but it really reduces the "attach surface"
The server SKU does work well as a general purpose OS. And yes I started doing so first with w2k pro. I still run it to this day, still as stable as the day I installed it. But to be clear, for me it is curiosity only.
I currently quad booting w2k, xp pro, vista 64 ultimate and Windows 7 beta on one hard drive with Ubuntu and PClinux set to boot from the other drive.
Why settle for just one OS when the computer can handle so much more than that? I don't like virtual server or other virtual hosts, preferring to hard boot each and every OS.
But really, seems kinda strange to me when I jump from one to the other that in client SKUs EVERYTHING is turned ON (including all those unsecure opened ports), whereas on Server SKUs most everything is turned off.
For a user who understands the difference between the two options, I would imagine that they aren't very worked up about the whole issue. For others, maybe they're just confused because Windows Home Server is supposed to be a multimedia system for their home. Who are they to know that Server 2008 is different from Home Server?
My question though is what's with the question to begin with? Are you a support person who is tired of all the calls about audio? If so, maybe a change of jobs since the general users aren't going to change anytime soon.
I hope support for accessing more than 4 GB of RAM using PAE make it to at least 32-bit Windows 7, especially because there will be no 32-bit version of Windows Server 2008 R2. The memory limits for Windows 7 don't seem to be announced yet, so this would be a good time to ask for this, I am sure.
Geoff Chappell just posted a draft of "Licensed Memory in Windows Vista" at the URL I previously posted above. Larry Osterman and anyone else interested, you should read it.
I would use a Windows Server to play audio, if I would have a Radio Station ;)