Last updated December 31, 1996 Differences Between Windows NT Workstation and Windows NT Server Introduction The purpose of this page is to serve as an accompaniment to the article, "Inside the Difference Between Windows NT Workstation and Windows NT Server" (Windows NT Magazine, November 1996). For that reason, a detailed description of the differences between the two flavors of NT will not be provided. Rather, we will present a very brief synopsis of the differences, and we make available the pseudocode that was generated during the investigation of those differences. The pseudocode is commented C-style code, and is best understood by those with some background in NT device drivers. Overview of This list presents an abbreviated summary of the Differences tuning differences in NTOSKRNL, the core Windows NT operating system component. * Telling the difference NTOSKRNL queries two Registry keys during initialization, performs some consistency checking on them, and then sets global variables that identify the operating system to itself, as well as to device drivers, as being Server or Workstation. The keys are originally created and initialized by Windows NT Setup. * System Size An operating system variable called MmSystemSize is used as a factor in several subsystems when they determine how much memory to allocate for various tasks. The threshold for a large workstation is any system with more than 32MB, whereas the threshold for a large server requires more than 64MB. * Worker Threads A server creates twice as many critical work threads on medium and large sized servers than on corresponding workstations. In addition, worker threads on a Server sleep with their stacks locked into memory, whereas on workstation their stacks are eligible for paging to disk. * Memory Management On Workstation the Memory Manager writes dirty data out to disk more readily than on Server. Also, on Workstations with less than 32MB of memory, the Memory Manager aggressively trims the memory footprints of active processes. * Process Management Process quanta of threads on a Server are generally 2-6 times larger than on Workstations. Workstation threads that wake-up after sleeping on an event also get priority boost not obtained on Server. * Memory Stashes On large Servers, the amount of private memory various components (Object Manager, Cache Manager, etc.) allocate for their own use is typically twice as large as on large Workstations. Where is NTTune? We're sorry to disappoint those that were hoping to come to this site to pick up NTTune for their own investigation (NTTune is a utility written by Mark Russinovich that can switch a workstation to run as a server and vice versa), but it is only being made available to members of the press. We do not want to encourage people to violate their Microsoft licensing agreements. Those of you that have been following this story will find it interesting to know that Microsoft altered the code in Service Pack 1's NTOSKRNL.EXE that determines whether NT should configure itself as Server or Workstation, specifically to break the original version of NTTune. NTTune V2.0, which worked on Service Pack 1 and all prior releases, was intentionally broken with the release of Service Pack 2. NTTune has been updated to V3.0, and works on all currently released versions of NT. More Information The following are sources of information on the differences. This page is an addendum to these articles. * "NT Workstation Vs. NT Serverion," Microsoft's description of the differences. * "Inside the Difference Between Windows NT Workstation and Windows NT Server," Windows NT Magazine, November 1996. This article provides an in-depth discussion of the tuning differences between Server and Workstation. * "Inside the Difference Between Windows NT Workstation and Windows NT Server," The NT Insider Newsletter, OSR Open Systems Resources. This article focuses on operating system differences (NTOSKRNL.EXE), and is aimed at those with some familiarity with Windows NT device driver development. ---------------------------------------------------------------------------- Pseudocode (27KB)