Windows Terminal Server, Remote Desktop Services, Presentation Virtualization, Application Delivery, Remote Application Development and Market Analysis
Navigation
About
Author's Profile
... About this Web Site
... Benny's Short Profile
... Benny's Biography
... Presentations 2010, 2009, 2008, 2007, 2006, 2005, 2004 and earlier
Awards

 

Scalability of 64-bit Terminal Server Platforms

Posted by Benny Tritsch on April 24, 2007 updated on July 17, 2007

[Introduction] [Test Environment] [Tools and Scripts] [Methodology] [Results] [Conclusions]
[Appendix 1: Performance Counters Used] [Appendix 2: Step-by-Step Description]

Testing Tools and Scripts

To assist with testing, I developed testing scripts and tools used on the different client and server computers.

Creating User Accounts

Before the start of the tests, 250 local user accounts had to be created on each server platform. These test user accounts were added to the local Users group and Remote Desktop Users group. This was accomplished through a Visual Basic script.

 

nMaxUsers = 401
strPassword = "BigIron2006_!"

Set objComputer = CreateObject("Shell.LocalMachine")
strComputer = objComputer.MachineName
Wscript.Echo "Computer name: " & strComputer
Wscript.Echo "Multiple users enabled: "
  & objComputer.IsMultipleUsersEnabled
Wscript.Echo "Remote connections enabled: "
  & objComputer.IsRemoteConnectionsEnabled

nCounter = 1

Do While nCounter < nMaxUsers
  strUser = "v" & nCounter

  Set colAccounts = GetObject("WinNT://" & strComputer & "")

  Set objUser = colAccounts.Create("user", strUser)
  objUser.SetPassword strPassword
  objUser.SetInfo

  wscript.Echo "User account " + strUser + " created"

  Set objNewUser = GetObject("WinNT://" & strComputer
    & "/" & strUser & ",user")

  Set objGroup = GetObject("WinNT://" & strComputer
    & "/Remote Desktop Users,group")
  objGroup.Add(objNewUser.ADsPath)
  wscript.Echo "Added User account " + strUser +
    " to Remote Desktop Users group"

  Set objGroup = GetObject("WinNT://"
    & strComputer & "/Users,group")
  objGroup.Add(objNewUser.ADsPath)
  wscript.Echo "Added User account " + strUser +
    " to Users group"

  nCounter = nCounter + 1
Loop

Listing: Script nuser.vbs, which creates 400 user accounts by using Windows Script Host. The script has to be executed in the context of a user session with administrator privileges.

Installing Applications and Providing Documents

The tests performed for this white paper are based on launching a sequence of applications and opening documents. The following applications were installed on the Terminal Servers.

  • Microsoft Office 2003
  • Adobe Acrobat Reader 7

NOTE: See “Setting up the Server” for more details on tuning the applications.

During the test three applications were launched using the following documents.

  • Notepad.exe – ComputerWorld.txt: ANSI text file, 8.4 kilobytes
  • Acrobat Reader – vCC_Admin_EN.pdf: Adobe Acrobat PDF document, 3.8 megabytes
  • Microsoft Word – vPMS_Inst_EN.doc: Microsoft Word document, 3.1 megabytes

During the tests, the applications showed specific memory footprints, all related to the documents loaded. Winword.exe used between 13 and 18 megabytes, Notepad.exe used approx. 3 megabytes, and Acrobat Reader used almost 30 megabytes per session.

Creating the User Sessions

During the test sequence, the user sessions are initiated from the load generators by visionapp Remote Desktop Load Edition. An XML file on each client defines the IP address of the target server and the user credentials (username and password).

NOTE: It is no problem to open up to 40 user sessions from each of the load generators.

The standard settings for this test sequence were the following:

  • Number of load generators used for each test sequence: 10
  • Number of users per load generator: 20 to 40
  • Interval between user logons: 60 seconds (60,000 msec)

 

 

Figure: One instance of vRD Load Edition with 20 users configured and displayed within vRD right after the start of a test sequence. At this time, no test user is logged in yet.

 

<?xml version="1.0" encoding="utf-16"?>
<vRDLoadConfigurationFile>
  <Testcase ServerName="10.4.1.93">
    <Domain>10.4.1.93</Domain>
    <User>v1</User>
    <Password>BigIron2006_!</Password>
  </Testcase>
  <Testcase ServerName="10.4.1.93">
    <Domain>10.4.1.93</Domain>
    <User>v2</User>
    <Password>BigIron2006_!</Password>
  </Testcase>
  ...
  ...
</vRDLoadConfigurationFile>

Listing: XML sample file used to configure vRD Load Edition

User Profiles and Test Sequence

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.

In order to create the user profiles automatically without using a domain controller, we added a simple script to the Startup folder of All Users. Its purpose was to copy all required document files from a common source to each user’s desktop of as soon as the user logged in. After a delay of 10 seconds, the ASCII document was loaded with Notepad.exe. After another 20 seconds, the PDF document was loaded with Adobe Acrobat Reader. Finally, after 20 seconds more, the Word document was loaded by Microsoft Word. NOTE: The average size of each user profile generated during the test was 7.3 MB.

NOTE: The delays between the different actions in the script were controlled by calling the command-line tool Sleep.exe from the Microsoft Windows Server 2003 Resource Kit.

We had to make sure that the paths for launching the 32-bit applications Adobe Acrobat Reader and Microsoft Word were set properly. While the path on the 32-bit platform was “C:\Program Files\”, the path on the 64-bit platform was “C:\Program Files (x86)\”. On the 64-bit platform, the login script looked as follows:

 

@echo off
if not exist "%userprofile%\Desktop\ComputerWorld.txt"
  copy c:\Documents\ComputerWorld.txt "%userprofile%\Desktop"
if not exist "%userprofile%\Desktop\vCC_Admin_EN.pdf"
  copy c:\Documents\vCC_Admin_EN.pdf "%userprofile%\Desktop"
if not exist "%userprofile%\Desktop\vPMS_Inst_EN.doc"
  copy c:\Documents\vPMS_Inst_EN.doc "%userprofile%\Desktop"
echo Document files copied
sleep 20
start /B notepad.exe "%userprofile%\Desktop\ComputerWorld.txt"
echo Tried to launch Notepad with ComputerWorld.txt (8.4 KB)
sleep 20
start /B "C:\Program Files (x86)\Adobe\Acrobat 7.0\Reader\AcroRd32.exe"
  "%userprofile%\Desktop\vCC_Admin_EN.pdf"
echo Tried to launch Acrobat Reader with vCC_Admin_EN.pdf (3.8 MB)
sleep 20
start /B "C:\Program Files (x86)\Microsoft Office\Office\WinWord.exe"
  "%userprofile%\Desktop\vPMS_Inst_EN.doc"
echo Tried to launch Microsoft Word with vPMS_Inst_EN.doc (3.1 MB)
pause

Listing: The script BigIron.cmd in the Startup folder of All Users

 

Next