Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
Keywords: citrix winframe
Appropriately sizing a WinFrame server to meet current and future usage requirements can be a challenging exercise. Acquiring a server that is too big for the job is a waste of capital, while a server that is too small or does not provide the expandability needed for the planned growth of the company is false economy.
Many Citrix customers want to know how many simultaneous user connections to WinFrame they will be able to support on a certain server platform. This is a legitimate question; however an immediate, accurate answer is almost impossible to give.
There are many variables to consider when sizing a WinFrame server. Will 32-bit applications be used or will there also be 16-bit Windows or DOS applications? Are the applications processor- and/or memory-intensive or are they mainly "light" applications? Will the WinFrame server be a primary domain controller (PDC) or a backup domain controller (BDC)? If so, how large is the domain? Will the WinFrame server be used for other functions (for example, file server, print server, fax server, Web server, firewall, SQL server, etc.)? Will there be power users executing two or more applications simultaneously or only typical users executing one application at a time?
This document describes how to use Wilson WindowWare, Inc.'s WinBatch application to perform a system sizing analysis of a WinFrame server platform.
Make five connections, one at a time, from the WinFrame client to the WinFrame server. This starts a WinBatch script for each connection and the WINFRAME sessions are minimized to the client's task bar. This scenario simulates five users actively using WinFrame.
When five individual sessions are actively running the WinBatch script, start Performance Monitor on the WinFrame console. This creates a log file that captures processor and memory statistics. Add these statistics to the table and then continue with the next set of five connections. The log file now contains statistics for ten user connections.
Without using a scripting utility such as WinBatch, you would need dozens of actual users to simulate load on the WinFrame server. Using WinBatch, you can simulate as many user connections as you want on an ad hoc basis, without seeking help from human resources.
The result of this exercise is a table that depicts actual processor and memory utilization statistics given varying user loads in five-user increments. When average processor and/or memory utilization rises near 90%, the WinFrame server is reaching its peak in maximum user connections.
In WinBatch, you click Begin Macro Record to record a series of keystrokes. Then you click End Macro Record to end the macro recording. By adding the recorded macro into a WinBatch script, you can play back the recorded keystrokes to simulate the actual usage of an application. For example, you can record a macro using Microsoft Word. In this case, the macro might be named MSWORD.WBM. The .WBM extension signifies a WinBatch macro. Executing the macro (by incorporating the macro into a WinBatch script) simulates a user working in Microsoft Word.
IMPORTANT: It is important to note that WinBatch can only effectively capture keystroke commands. Mouse movements are not captured in the WinBatch macro.
Follow the steps below for creating a WinBatch macro. This process can be difficult to perform, so please follow these steps very carefully. All steps are performed at the WinFrame console.
NOTE: The macro can only be saved in the \Winbatch\WinMacro directory. You can move it to another directory later if desired.
; Recorded Macro N:\APPS\WINBATCH\WINMACRO\MSWORD.WBM SendKey(`{ALT}fon:\apps\winbatch\winmacro\document.txt{ENTER}{DOWN}{DOWN}`) SendKey(`{DOWN}{DOWN}{DOWN}{ENTER}**********{ENTER}{ENTER}Now{SPACE}I{SPACE}`) SendKey(`am{SPACE}continuing{SPACE}to{SPACE}type{SPACE}in{SPACE}{ENTER}`) SendKey(`this{SPACE}document.{SPACE}{SPACE}I{SPACE}will{SPACE}now{SPACE}`) SendKey(`sav{BACKSPACE}{BACKSPACE}{BACKSPACE}close{SPACE}the{SPACE}{ENTER}`) SendKey(`document{SPACE}without{SPACE}saving{SPACE}mu{SPACE}{BACKSPACE}`) SendKey(`{BACKSPACE}y{SPACE}changes.{ENTER}{ENTER}Here{SPACE}goes.....`) SendKey(`..{ALT}fxn{ALT}frn:\apps\winbatch\winmacro\msword.wbt{ENTER}`) ; End Recorded Macro
Run ("c:\apps\office\winword.exe","") ; Recorded Macro N:\APPS\WINBATCH\WINMACRO\MSWORD.WBM SendKey(`{ALT}fon:\apps\winbatch\winmacro\document.txt{ENTER}{DOWN}{DOWN}`) SendKey(`{DOWN}{DOWN}{DOWN}{ENTER}**********{ENTER}{ENTER}Now{SPACE}I{SPACE}`) SendKey(`am{SPACE}continuing{SPACE}to{SPACE}type{SPACE}in{SPACE}{ENTER}`) SendKey(`this{SPACE}document.{SPACE}{SPACE}I{SPACE}will{SPACE}now{SPACE}`) SendKey(`sav{BACKSPACE}{BACKSPACE}{BACKSPACE}close{SPACE}the{SPACE}{ENTER}`) SendKey(`document{SPACE}without{SPACE}saving{SPACE}mu{SPACE}{BACKSPACE}`) SendKey(`{BACKSPACE}y{SPACE}changes.{ENTER}{ENTER}Here{SPACE}goes.....`) SendKey(`..{ALT}fxn{ALT}frn:\apps\winbatch\winmacro\msword.wbt{ENTER}`) ; End Recorded Macro
Run ("c:\apps\office\winword.exe","") TimeDelay (300) ; Recorded Macro N:\APPS\WINBATCH\WINMACRO\MSWORD.WBM SendKey(`{ALT}fon:\apps\winbatch\winmacro\document.txt{ENTER}{DOWN}{DOWN}`) SendKey(`{DOWN}{DOWN}{DOWN}{ENTER}**********{ENTER}{ENTER}Now{SPACE}I{SPACE}`) SendKey(`am{SPACE}continuing{SPACE}to{SPACE}type{SPACE}in{SPACE}{ENTER}`) SendKey(`this{SPACE}document.{SPACE}{SPACE}I{SPACE}will{SPACE}now{SPACE}`) SendKey(`sav{BACKSPACE}{BACKSPACE}{BACKSPACE}close{SPACE}the{SPACE}{ENTER}`) SendKey(`document{SPACE}without{SPACE}saving{SPACE}mu{SPACE}{BACKSPACE}`) SendKey(`{BACKSPACE}y{SPACE}changes.{ENTER}{ENTER}Here{SPACE}goes.....`) SendKey(`..{ALT}fxn{ALT}frn:\apps\winbatch\winmacro\msword.wbt{ENTER}`) ; End Recorded Macro
:word Run ("c:\apps\office\winword.exe","") TimeDelay (300) ; Recorded Macro N:\APPS\WINBATCH\WINMACRO\MSWORD.WBM SendKey(`{ALT}fon:\apps\winbatch\winmacro\document.txt{ENTER}{DOWN}{DOWN}`) SendKey(`{DOWN}{DOWN}{DOWN}{ENTER}**********{ENTER}{ENTER}Now{SPACE}I{SPACE}`) SendKey(`am{SPACE}continuing{SPACE}to{SPACE}type{SPACE}in{SPACE}{ENTER}`) SendKey(`this{SPACE}document.{SPACE}{SPACE}I{SPACE}will{SPACE}now{SPACE}`) SendKey(`sav{BACKSPACE}{BACKSPACE}{BACKSPACE}close{SPACE}the{SPACE}{ENTER}`) SendKey(`document{SPACE}without{SPACE}saving{SPACE}mu{SPACE}{BACKSPACE}`) SendKey(`{BACKSPACE}y{SPACE}changes.{ENTER}{ENTER}Here{SPACE}goes.....`) SendKey(`..{ALT}fxn{ALT}frn:\apps\winbatch\winmacro\msword.wbt{ENTER}`) ; End Recorded Macro GoSub word
NOTE: Several WinBatch macros can be incorporated into the same WinBatch script. For example, you can have an MSOFFICE.WBT script that includes the MSWORD.WBM, MSEXCEL.WBM, and MSPPT.WBM macros inside of it. Simply copy and paste the individual macros into the script file. You will need to insert a "run" statement (see Step 2 above) before each macro and you may also want to insert time delays before each macro to emulate human behavior.
Using WinBatch Script and Performance Monitor to Perform System Configuration
The following sections discuss the methodology used to perform system configuration.
Once five sessions are active, run Performance Monitor on the WinFrame console. A log file is created that captures processor and memory statistics. Once these statistics are gathered and recorded into the table, you can continue with the next set of five connections. A Performance Monitor log is created again, now capturing statistics for ten total user connections, and then 15, 20, 25, and so on.
The result of this exercise is a table that depicts actual processor and memory utilization statistics given varying user loads in five-user increments. When average processor and/or memory utilization approaches 90%, the WinFrame server is reaching its maximum number of user connections.
To create a log in Performance Monitor:
A line graph is created; however, it is more important to look at the numerical statistics rather than the line graph itself. Note that each counter displays Average, Minimum, and Maximum values.
When you have an average CPU (% Total Processor Time) of 90% or above, you are reaching the acceptable capacity of your WinFrame server before users begin to notice a significant degradation in performance. Memory is much easier to add to a server than processors and is relatively inexpensive. If you are experiencing high Pages/sec values, simply add more memory. However, when your processor statistics are in the 90th percentile, your system may not be capable of adding another processor. If this is the case, it may be time to expand into an additional WinFrame server and to take advantage of Citrix's Load Balancing Option Pack.
The table below is only a sample. It does not convey actual WinFrame statistics. It does, however, illustrate what a system sizing table might look like. Do not feel restricted to the two counters recommended in this document - % Total Processor Time and Pages/sec. Feel free to capture and record statistics for any additional Performance Monitor counters you feel are applicable to your configuration.
Processor Utilization Percentage Memory Utilization Percentage (% Total Processor Time) (Pages/sec) # Sessions Average Minimum Maximum Average Minimum Maximum 5 15% 5% 77% 6 0 119 10 18% 7% 82% 16 5 122 15 25% 10% 75% 30 11 127 20 36% 14% 88% 36 22 139 25 46% 18% 95% 44 40 164 30 53% 20% 88% 55 51 173 35 59% 26% 92% 62 59 188 40 67% 35% 96% 69 64 192 45 74% 44% 97% 77 69 199 50 82% 57% 98% 88 75 206The % Total Processor Time is the average percentage of time that all the processors on the system are busy executing non-idle threads. On a multiprocessor system, this is 100% if all processors are always busy, 50% if all processors are 50% busy, and 25% if all of the processors are 25% busy. It can be viewed as the fraction of the time spent doing useful work. Each processor is assigned an idle thread in the idle process, which consumes those unproductive processor cycles not used by any other threads.
Pages/sec is the number of pages read from the disk or written to the disk to resolve memory references to pages that were not in memory at the time of the reference. This is the sum of Pages Input/sec and Pages Output/sec. This counter includes paging traffic on behalf of the system cache to access file data for applications. This value also includes the pages to and from non-cached mapped memory files. This is the primary counter to observe if you are concerned about excessive memory pressure (that is, thrashing), and the excessive paging that may result.
Appropriately sizing a WinFrame server can be a challenging exercise. By using Wilson WindowWare's WinBatch utility, you can create macros and scripts to simulate user load without inconveniencing actual users. Using Performance Monitor to capture a log file for each five user increment is a great way to monitor your system, and to determine the optimal number of concurrent users your system is capable of before placing WinFrame into a production environment.
If you would like to contact Wilson WindowWare regarding WinBatch, please call (800) 762-8383. To learn more about WinBatch, you may consult their Web site at http://www.windowware.com.
If you would like to request on-site assistance, please contact a local Citrix reseller or call your Citrix sales representative at (800) 437-7503 to inquire about Citrix's on-site professional services.
Article ID: W13488
Filename: How to Size a Winframe Server.txt
File Created: 2001:02:24:15:24:46
Last Updated: 2001:02:24:15:24:46