| ... | Articles and Whitepapers |
| ... | Downloads |
| ... | Internet Resources |
| ... | Windows Server 2008 R2 Remote Desktop Services |
| ... | Windows Server 2003 Terminal Services |
| ... | About this Web Site |
| ... | Benny's Short Profile |
| ... | Benny's Biography |
| ... | Presentations 2010, 2009, 2008, 2007, 2006, 2005, 2004 and earlier |
Posted by Benny Tritsch on November 25, 2004 – updated on January 31, 2005
[Introduction] [Test Setup] [Testing Methodology] [Analysis 1] [Analysis 2] [Analysis 3]
The test was performed at the Fujitsu Siemens Computers Laboratories in Augsburg, Germany. We used specific test scripts and tools, which will be described below. A tool for creating the test user accounts, Console User Manager, was provided by Microsoft Consulting Services. The test laboratory used Fujitsu Siemens Computers servers.
The Terminal Services testing laboratory provided a simple setup using two types of servers:
The Primergy T850 Enterprise Server was booted with the /PEA boot.ini switch in order to be able to access the complete memory. Windows 2000 Advanced Server, Windows 2000 Datacenter Server, Windows Server 2003, Enterprise Edition, and Windows Server 2003, Datacenter Edition, can use /PAE to take advantage of physical memory beyond 4 gigabytes.
Other switches should not be used. Using the /3GB (for Windows 2000) or the /4GT (for Windows 2003) boot.ini switches is inappropriate for Terminal Server environments because those switches change the partition between the application memory space and kernel memory space. These switches gives each application 3 gigabytes of memory, which in turn only leaves 1 gigabyte for the kernel - a disaster in Terminal Server environments. I doubt that an individual application will consume 3 gigabytes of memory on a Terminal Server very often. On large Terminal Servers, it only matters if an application is able to access physical memory space beyond 4 gigabytes - and this is exactly what the /PEA boot.ini switch provides.
NOTE: If you want to know more about the /PEA boot.ini switch, see the following articles:
Additional components of the test laboratory included a Gigabit Ethernet infrastructure.
To assist with testing, some testing scripts used on the client computers had to be developed.
Before the start of the tests, 150 user accounts had to be created. This was accomplished using two scripts and a command line tool.
|
Echo Create 150 user accounts >>User150.log |
Listing 1: Script User150.cmd, which creates 150 user accounts by using the secondary script Nuser.cmd.
The secondary script, Nuser.cmd, was used to create the individual user accounts, add them to the Remote Desktop Users group and set some required user's attributes.
|
call net user %1 /ADD |
Listing 2: Script Nuser.cmd
Changing the users' attributes requires the usage of a command line tool that was provided by Microsoft Consulting Services. In the following, the options of the Console User Manager are displayed.
|
CUsrMgr Ver 1.0 Jan98 by G.Zanzen (c) MCS Central Europe |
Listing 3: CUsrMgr by MCS Central Europe
The following applications were installed on the Terminal Server:
During the test three applications were launched using the following documents.
The following script was used to create user-specific RDP files. These RDP files were used to launch the individual user sessions.
|
@echo off |
Listing 4: The script Cr.cmd to create a new session. It requires a unique session number as parameter.
Executing the script Cr.cmd with the parameter “1” created the following RDP file and launched the appropriate session:
|
screen mode id:i:1 |
Listing 5: Resulting RDP configuration for user “fsc1”
It is not possible to open the same physical document file from multiple user sessions. Consequently, it was necessary to provide individual document files for all users. For this purpose, individual user profiles were used, which allowed the required documents to be copied to each user's desktop and to launch its associated application.
Creating the user profiles automatically without using a domain controller was the next challenge. To accomplish this, we created the folder %Systemroot% \System32 \Repl \Imports \scripts on the Terminal Server. We then copied the login file Logon.cmd into this folder and created a share with the name netlogon. This was the standard login share. The login script looked as follows:
|
@echo off |
Listing 6: The login script Logon.cmd
This chapter describes in detail how the testing was done and how automation script were used. Each client platform was used to host 10 users in their individual session created by the Cr.cmd script. Client #1 executed "Cr 1", "Cr 2", ... , "Cr 10" commands, client #2 executed "Cr 11", "Cr 12", ... , "Cr 20", and so on. The commands were executed manually from the client's command shell, each user's password "x" was entered manually during the login phase of each session. This partially manual workflow allowed a good way to adapt to the resulting load behavior on the Terminal Server.