Clients Share Terminal Server Resources
[This is preliminary documentation and subject to change.]
In a Windows®-based Terminal Server environment, multiple users can log on simultaneously to a Terminal Server. Consequently, the users are sharing the hardware and software resources of the Terminal Server, which can create the following areas of contention:
-
CPU time. Each user has his or her own desktop environment and can run whatever applications are available to that desktop. However, all applications run by all users are contending for the central CPU resources available on the Terminal Server. If one user runs a poorly written, CPU-intensive application, other users might experience a visible loss of performance.
-
Disk access. Users contend for access to applications and related application files. In addition, users contend for disk accesses by the server operating system, such as loading DLLs or swapping memory between the paging file and physical memory.
-
Random Access Memory (RAM). Users contend for RAM on the Terminal Server because the client computers do not have local RAM.
-
Network access. Network access is essential in the Terminal Server environment because all desktop activity—graphical output and mouse/keyboard input—flows over the network links between the client desktop and the server. In addition, the users' applications running on the Terminal Server contend for access to other network resources.
-
Server-side hardware components. Hardware components such as CD-ROMs, floppy disk drives, serial ports, and parallel ports are typically server-based, not client-based. Sharing these traditionally non-shared components creates new considerations for users and for applications that access these hardware components. For more information, see Peripheral Hardware.
-
Access to global Windows NT objects and resources. In the Terminal Server environment, users do not run individual copies of Windows NT—some of the core components are cloned, but the remaining components are shared among the users. Thus, users are competing for access to the registry, the paging file, system services, and other global objects and resources.
Many of the preceding points of contention can be mitigated by sizing the Terminal Server with sufficient CPU, memory, and disk resources to handle the client demand. For example, a multiple processor configuration can maximize CPU availability. Memory availability can be maximized by installing extra physical memory. Finally, disk access performance can be maximized by configuring multiple SCSI channels and distributing your operating system and application loads across different physical drives. Properly configuring a Terminal Server is a critical element of perceived application performance.
Although hardware sizing is an important part of creating a scalable Terminal Server environment, the software considerations are equally important. In fact, fine-tuning an application often can do a lot to reduce resource competition and improve perceived application performance. For more information, see Terminal Server Programming Guidelines.