The Internet is full of articles written by technology enthusiasts explaining how to use Windows Server 2008 as your desktop operating system. First of all let me explain that Windows Vista = Windows Server 2008. They run the same kernel. Your first question is: “Why Server 2008" runs faster than Windows Vista?”. I will answer this with an example; take a (slow) Mercedes, strip off all its luxuries and use it as a race car. So in reality Windows Server 2008 has some components disabled which give it the added speed. If you personally ask me whether you should run Server 2008 as a workstation OS then my response is: if you intend to use Hyper-V then yes, otherwise stay on Vista Ultimate. Now for the juice of the article. Multimedia and games play awfully slow on Server 2008. This is to good to keep to myself so here is how you can increase performance for games/multimedia. Windows 6 includes a service called Multimedia Class Scheduler Service. The service prioritizes threads based on their tasks and according to some registry parameters. The service is disabled by default in Windows Server 2008 and you might want to enable it.
Configuration settings for this service are stored under the following registry key:
In there you will find a DWORD called SystemResponsiveness which determines the CPU percentage guaranteed for background applications. This should be 20 for Windows Vista and 90 for Windows Server 2008. What does that mean? During video playback, background applications will have a maximum of 20% CPU if they will require it. Under server 2008, they can have 90%! This clearly indicates that you must lower this setting in Server 2008 if you want to boost your multimedia applications. Keep in mind that if you specify a value of 0, will default to 10%. If you have a high end system, you might try and set it to 50 on both Server 2008 or Vista. Let us know of the outcome 🙂
The key mentioned above contains a sub-key named Tasks which contains the tasks currently supported by Windows. These tasks are:
These keys contain a set of parameters to be applied to threads that are associated with a Task.
Here is a copy/paste of the values table from MSDN:
|Affinity||REG_DWORD||A bit mask that indicates the processor affinity. Both 0x00 and 0xFFFFFFFF indicate that processor affinity is not used.|
|Background Only||REG_SZ||Indicates whether this is a background task (no user interface). The threads of a background task do not change because of a change in window focus. This value can be set to True or False.|
|BackgroundPriority||REG_DWORD||The background priority. The range of values is 1-8.|
|Clock Rate||REG_DWORD||The maximum guaranteed clock rate the system uses if a thread joins this task, in 100-nanosecond intervals.|
|GPU Priority||REG_DWORD||The GPU priority. The range of values is 0-31. This priority is not yet used.|
|Priority||REG_DWORD||The task priority. The range of values is 1 (low) to 8 (high).
For tasks with a Scheduling Category of High, this value is always treated as 2.
|Scheduling Category||REG_SZ||The scheduling category. This value can be set to High, Medium, or Low.|
|SFIO Priority||REG_SZ||The scheduled I/O priority. This value is reflected by all IRPs issued by threads joined to this task. This value can be set to Idle, Low, Normal, or High.
Critical priority is reserved for the memory manager.