Microsoft Exchange Load Generator
Microsoft Exchange Load Generator
Microsoft Corporation
Published: June 2010
This document provides information about working with the Exchange Load Generator tool. This
tool helps administrators perform benchmarking, pre-deployment validation, and stress testing
tasks that introduce various types of workloads into a test (non-production) Exchange messaging
system.
Comments? Send feedback to [email protected]
1
Contents
Microsoft Exchange Load Generator............................................................................................ 1
Microsoft Exchange Load Generator........................................................................................... 5
System Requirements for Exchange Load Generator.................................................................6
When to Use Exchange Load Generator.....................................................................................7
Installing Exchange Load Generator on a Client Computer.........................................................8
Creating and Running the Exchange Load Generator Test.........................................................9
How to Start Exchange Load Generator.................................................................................11
How to Set Up the Exchange Load Generator Test Topology................................................12
How to Configure the Test Properties.....................................................................................14
Customizing the Exchange Load Generator Test...................................................................16
Specifying Threshold Detection during Simulation.................................................................36
How to Enable Remote Control.............................................................................................. 41
How to Enable Stress Mode................................................................................................... 43
How to Enable RPC over HTTP............................................................................................. 43
How to Initialize the Exchange Load Generator Test..............................................................44
How to Run the Exchange Load Generator Test....................................................................46
How to Stop the Simulation Process......................................................................................47
How to Repeat the Test.......................................................................................................... 47
Running Exchange Load Generator as a Command-Line Program..........................................48
Running Exchange Load Generator Tasks................................................................................49
Using System Monitor and Exchange Load Generator Data.....................................................51
How to Consolidate System Monitor Data..............................................................................52
Operational Recommendations for Using Exchange Load Generator.......................................53
Specific Features and Behaviors of Exchange Load Generator................................................57
Public Folders........................................................................................................................ 57
Mail Flow and Recipients....................................................................................................... 57
Task Rate, Concurrency Settings, and Stress Mode..............................................................58
Dynamic Mail Generator........................................................................................................ 59
Performance Counters Reference.............................................................................................62
Scripted Load Modules in the Exchange Load Generator Framework......................................70
Exchange Load Generator Configuration XML.......................................................................71
Base Script Verbs................................................................................................................... 72
The POP3 Module.................................................................................................................. 76
The SMTP Module................................................................................................................. 78
The IMAP4 Module................................................................................................................ 79
The Outlook Web Access Module.......................................................................................... 84
Frequently Asked Questions about Exchange Load Generator.................................................96
Copyright................................................................................................................................. 105
3
Microsoft Exchange Load Generator
Microsoft Exchange Load Generator is a pre-deployment validation, and stress testing tool that
introduces various types of workloads into a test (non-production) Exchange messaging system.
Exchange Load Generator lets you simulate the delivery of multiple MAPI client messaging
requests to an Exchange server. To simulate the delivery of these messaging requests, you run
Exchange Load Generator tests on client computers. These tests send multiple messaging
requests to the Exchange server, which causes a mail load.
After the tests are complete, you can use the results to help do the following:
Verify the overall deployment plan
Identify bottlenecks on the server
Validate Exchange settings and server configurations
Exchange Load Generator tests the effect of client load on a server.
There are general tasks such as logoff, logon, and send mail that are common to most protocols.
Additionally, there are feature tasks that are available only in certain protocols.
Improved simulation accuracy Accurate mail flow for profiles; Light (5/20), Average
(10/40), Heavy (20/80), Very Heavy (30/120). As well as; 50, 100, 150, 200, 250, 300,
350, 400, 450, 500 (sent/received per day).
ActiveSync Module At last we have an ActiveSync module that can be shipped outside
of the Exchange Organization. Enjoy!
Dynamic Mail Content Generator Message files no longer required. Messages created
on the fly.
UI enhancements User group page shows the separate selection of ActionProfile and
MailboxStoreProfile we also enable/disable columns based on module selected.
Mailbox Profile for initialization now based on mailbox size Settings range from
2mb to 2GB.
4
Public Folder Initialization You are now able to enable or disable public folder
initialization. The checkbox to disable PF intialization will only be visible if you have a PF
configured. Loadgen will skip FreeBusy initialization if no public store exists.
Log files in their own directory You will notice that log files are no longer being
created in the Loadgen root. They are now created under %ALLUSERSPROFILE
%/Microsoft/Exchange Load Generator. We have added a shortcut under the Exchange
Load Generator folder that will direct you to this location.
New Junk Mail Rule action Create default additional folders, i.e. Sync Issues,
Conflicts, Local Failures, Server Failures, Junk E-mail, at the time of first logon during
simulation. This is what Outlook does, applies to both outlook 2003 and 2007. LoadGen
simulation code will only do default JunkEmail rule creation with blank blocking sender
list/safer sender list.
Calendar Items have reminders turned off by default We were seeing extra hits on
the server that turned out to be Loadgen trying to dismiss all the reminders that would
pop up.
Additionally, the Exchange Load Generator includes support for native execution on a 64-bit
platform.
5
Component Minimum Recommended
.NET Framework Microsoft .NET Framework 3.5 Microsoft .NET Framework 3.5
Redistributable Package Redistributable Package
Running against Exchange Exchange Server 2007 (latest Exchange Server 2007 (latest
Server SP), or Exchange 2010 SP), or Exchange 2010
Important
Exchange Load Generator should be used only in test environments that have no
connection to the production environment. This tool should not be used in a production
environment, an environment that is mission critical, or one that contains important
information of any kind anywhere in the network.
Exchange Load Generator uses many simulated user mailboxes to create the server
workload. Because mailboxes must be part of a domain users account, the Exchange
Load Generator tool therefore creates many domain user accounts to support these user
mailboxes. By design, Exchange Load Generator requires that the password associated
with these domain accounts be the same. Because this most likely does not comply with
your organization's security requirements, to lessen any risk this could present, we
recommend that this tool be used only on isolated test networks that do not have
connectivity to your production network.
Because load simulation works by using system resources, Exchange Load Generator is
unsuitable for use on production networks because it could interfere with production
operations by competing for those resources.
Additionally, Exchange Load Generator does not account for all factors that are required to size
servers completely. The following factors are not simulated by Exchange Load Generator and can
affect server capacity planning:
6
Loadgen will not replicate the correct IOPs per user. For IOP testing, we recommend you
use Microsoft Exchange Server Jetstress.
Exchange Load Generator also does not provide a complete picture of user experience, and its
results should not be interpreted in that manner.
7
installation or customize the installation location for your requirements.
8
Steps and sub steps Method(s) used
Configuring the test properties, which involves Command-line program to create file. Edit the
generating and editing a configuration file configuration file.
Running Exchange Load Generator as a
Command-Line Program
Common task: Customizing logon and logoff Edit the configuration file
behavior of users
Customizing the Exchange Load Generator
Test
Common task: Enabling RPC over HTTP Edit the configuration file
Customizing the Exchange Load Generator
Test
Verify that users were created in Active Active Directory Users and Computers
Directory
How to Set Up the Exchange Load Generator
9
Steps and sub steps Method(s) used
Test Topology
Deleting database and log files Control Panel > Administrative Tools
How to Repeat the Test
Removing users from Active Directory Active Directory Users and Computers
How to Repeat the Test
Note:
This procedure also starts the user interface version of Exchange Load Generator.
10
To start Exchange Load Generator from the user interface
1. Locate the folder in which you installed the Exchange Load Generator files. By default,
this is the Exchange Load Generator directory on the system drive.
2. Double-click LoadGenWin.exe for the graphical user interface version.
Important
You must configure the Exchange Server 2007 or the Exchange 2010 topology from
Exchange Management Console before you create the topology. This could involve, for
example, creating the required databases, pointing databases to the correct public
folders, or changing distribution group settings.
Note:
Exchange Load Generator can be run in an Exchange 2007 or Exchange 2010 topology
that contains no public folders.
11
4. On the Start a new test page, create a new configuration or use an existing configuration
file by clicking the selection you want. Click Continue.
5. On the Specify test settings page, define the global test settings as well as the Topology
permissions and user permissions.
You can choose Skip recipient management and continue with user group
configuration if your users have already been created. Continue to step 8.
If your users have not been created yet and you wish to do so through Loadgen click
Continue with recipient management and continue to step 6.
6. On the User settings page, set up according to your test requirements. For example,
select the user count that corresponds to each mailbox store, and then enter the number
of users that you want to simulate.
Note:
The number of users in the storage groups and server is automatically calculated
from the numbers you enter for each mailbox store. Click Continue.
7. On the Advanced recipient settings page, configure the options of Distribution List
Settings, Dynamic Distribution List Settings, Contact Settings, and External
Recipient Settings according to your test requirements. Click Continue. The progress
bar for Recipient creation is in progress is displayed.
8. When the recipient creation task is completed, the Specify test user groups page will
be displayed. From here you can configure one or more groups by Name, Client Type,
Action Profile, Mailbox Profile, PreTestLogon or Container. You can edit any of the
fields, and you can add or delete user groups as required. Click Continue.
9. The Remote configurations page lets you configure one or more remote load
generators. This is an optional task. Click Continue.
10. A Configuration summary Review this summary, and then select an action from the
selection in the lower half of the screen. This includes going back and adjusting or re-
doing any items that you choose.
12
How to Configure the Test Properties
The procedure explains how to configure the test properties by generating a configuration file and
then editing it. Tasks include setting up user credentials and specifying parameters such as the
length of time that the test should run.
13
4. Open the LoadGenConfig.xml file by using Notepad or a similar editor. The section in the
XML Configuration File Internals, describes the meaning and purpose of each
parameter listed in the configuration file.
5. Search for the LdapSearchFilter parameter. This parameter is used to restrict the set of
users who will be included in the test run. By default, it includes all mail-enabled users in
the directory at or below the base domain name that is specified in the LdapBaseDn
parameter, which immediately follows LdapSearchFilter. You will notice that
LdapBaseDn has already been set to the correct value if you are running LoadGenCmd
while logged in with domain credentials. If the LdapBaseDn parameter does not correctly
specify the base location of your test users, you will need to manually adjust this
parameter.
6. Search for the TargetForest parameter. This parameter specifies which forest should be
used to find users and Exchange topology information. The value can be any of the
following: a NetBIOS or fully qualified domain name representing a global catalog server,
domain controller, domain in the forest, or root of the forest. This parameter has already
been set to an acceptable value if you are running LoadGenCmd when logged on with
domain credentials. If the value must be changed for any reason, you can edit it at this
point. An example of the xml script is as follows, with an accompanying discussion of the
parameters.
<TargetForest>E12</TargetForest>
<DirectoryUsername>administrator</DirectoryUsername>
<DirectoryPassword>Manager1</DirectoryPassword>
<DirectoryDomain>E12</DirectoryDomain>
<MasterPassword>Manager1</MasterPassword>
<RunLengthDuration>P0Y0M0DT8H0M0S</RunLengthDuration>
<SimulatedDayLength>P0Y0M0DT8H0M0S</SimulatedDayLength>
The DirectoryUsername, DirectoryPassword, and DirectoryDomain parameters
specify the credentials that will be used to access Active Directory during the test.
You will minimally need to adjust the DirectoryPassword parameter.
The MasterPassword and MasterDomain parameters specify the domain and
password that can be used to authenticate with each test account. You will minimally
need to set the MasterPassword parameter equal to the password that you specified
when you created the test accounts.
The RunLengthDuration parameter specifies how long a test will run before
stopping. By default, this is equal to 1 hour. The parameter is specified by using the
ISO 8601 extended format of PaYbMcDTdHeMfS where a equals the number of
years, b equals the number of months, c equals the number of days, d equals the
number of hours, e equals the number of minutes, and f equals the number of
seconds. A value of P0Y0M0DT1H0M0S means 1 hour, as does PT1H. To change
this to an 8-hour test, you could use P8HS as the value. If you want the test to run
with an infinite duration, specify a duration of 0, for example PT0S.
To define RunLengthDuration at each user group, specify this global
14
RunLengthDuration as 0.
7. Save your configuration file.
Browse Calendar
BrowseCalendar opens the Calendar folder and performs modify or delete actions on content
within the folder. If BrowseCalendarActionCount is 0, no action will be performed on calendar
items.
Parameter Comment
Browse Contacts
BrowseContacts opens the Contacts folder and performs modify actions on content within the
folder.
There are no parameters for this task.
15
creating or deleting sub folders, and performing the same processing actions that the
ReadAndProcessMessages task performs on mailbox content.
Parameter Comment
16
Parameter Comment
Browse Tasks
BrowseTasks opens the Tasks folder and performs modify or delete actions on content within the
folder. The status of the task must be complete before a deletion is performed.
There are no parameters for this task.
Create Contact
CreateContact adds a contact to the Contacts folder in the user's mailbox.
There are no parameters for this task.
Create Folder
CreateFolder creates a folder in the mailbox folder hierarchy. The CreateFolder task can be
tuned to create at the top level of the hierarchy at a given percentage, and also takes minimum,
maximum, and average parameters for the desired hierarchy depth.
Parameter Comment
Create Tasks
CreateTask adds a task to the Tasks folder in the user's mailbox.
No parameters for this task.
Delete Mail
DeleteMail deletes mail from a selected folder, which is controlled by
DeleteFromDeletedItemsPercentage. If you are not deleting from the DeletedItems folder,
Exchange Load Generator randomly selects one from any other folder. The source folder can be
weighted to select the Deleted Items folder.
17
Parameter Comment
Parameter Comment
Edit Rules
EditRules modifies the rules in a user's mailbox. This can include create, change, and delete
operations.
Parameter Comment
18
Parameter Comment
a From-Distribution-List condition.
19
Parameter Comment
20
Parameter Comment
Export Mail
ExportMail simulates the effect of exporting the content of a folder from the mailbox. The
ExportMail task can be configured to include subfolders of the selected folder, or the whole
mailbox.
Note:
This action should not actually result in content being stored locally on the client as that
will not scale. The task should only simulate the effect of the server of performing this
action.
Parameter Comment
21
Logoff
Logoff disconnects from the server in such a way that client and server side resources
associated with the user connection are released.
Parameter Comment
Logon
Logon establishes a user connection to the server. Depending on the type of client being
simulated, this can involve more than one connection being established, and can involve any
processing that is typically run as part of starting the client or performing a user initiated action
within the client to establish a connection to the server. For example: authentication, fetching any
information that is required to build the user interface, and so on.
Note:
By default, all the mailbox connections are encrypted. There is currently no parameter
available to disable MAPI encryption.
Parameter Comment
Make Appointment
MakeAppointment adds an appointment to the calendar folder in the user's mailbox.
Parameter Comment
22
Parameter Comment
Move Mail
MoveMail moves messages from a selected folder to another selected folder in the mailbox. The
source folder selection can be weighted to select the Inbox, and the destination folder can be
weighted to select the Deleted Items folder.
Parameter Comment
Note:
This task will not be run if the user's mailbox is running Exchange 2007.
Parameter Comments
23
Parameter Comments
Parameter Comment
24
Parameter Comment
Request Meeting
RequestMeeting sends a meeting request message to a set of recipients.
Parameter Comment
25
Parameter Comment
Search
Search performs a content search on a folder or throughout the whole mailbox. This results in the
default search behavior for the client platform. For example, on a cached mode Outlook client,
this would be a no-op. For an online mode Outlook client, this would call into the content index
(CI) on an Exchange 2007 server.
This task is not implemented in Office Outlook simulation modules.
Synchronize Folders
SynchronizeFolders simulates the effect of the server during a synchronize folders operation.
This should simulate the actual effect on the server that would be caused by synchronizing a local
version of mailbox data with the data that is stored on the server that uses whatever method is
appropriate for the given client type and protocol.
This task is not implemented in Office Outlook simulation modules.
Parameter Comment
26
Parameter Comment
detection starts.
MailboxStoreProfile
Parameter Comment
27
Parameter Comment
Load Generator follows the existing rules and tries to fix the
condition and actions by setting the valid recipients and
folders. This option takes effect only if BuildInboxRules is set
to false. Generally this option is used when the mailboxes
are restored by using production data.
UseOrdinalFolderName Specify whether to use the ordinal number for folder name. If
set to true, the folder name will resemble Folder1, Folder2,
and so on. Otherwise, the GUID will be used for folder
names.
MessageContentTimeFrame The period of time frame percentage that the delivery times
of all messages are within this time frame.
28
Parameter Comment
AppointmentRecentContentTimeFr A time frame from the last day of the current month
ame backward. All calendar items scheduled within this period
are classified as recent. The default value is two months.
AppointmentContentTimeFrame The period of time from the last day of the current month that
all calendar items are scheduled within this time frame. The
default value is two months.
PublicStoreProfile
Parameter Comment
29
Parameter Comment
Note:
We recommend that you set global <RunLengthDuration/> to 0 if you are going to
customize durations for individual user groups. If global <RunLengthDuration/> is
30
defined, individual user groups cannot have a longer duration than the global
duration. Otherwise, the duration for the individual user group will be overwritten by
the global duration.
<MessageRecentContentTimeFrame>P0Y0M0DT0H0M0S</MessageRecentContentTim
eFrame>
<MessageContentTimeFrame>P0Y2M0DT0H0M0S</MessageContentTimeFrame>
31
<AppointmentPercentageRecent>0</AppointmentPercentageRecent>
<AppointmentRecentPercentageRecent>P0Y0M0DT0H5M0S</AppointmentRecentPerce
ntageRecent>
<AppointmentContentTimeFrame>P0Y2M0DT0H0M0S</AppointmentContentTimeFrame
>
<TaskCount>0</TaskCount>
</MailboxStoreProfile>
3. For public store initialization, customize the <PublicStoreProfile> section in the
configuration file as follows:
<PublicStoreProfile>
<MessageFiles />
<TopLevelFolderCount>1</TopLevelFolderCount>
<NonTopLevelFolderCount>1</NonTopLevelFolderCount>
<MinimumFolderDepth>1</MinimumFolderDepth>
<AverageFolderDepth>2</AverageFolderDepth>
<MaximumFolderDepth>3</MaximumFolderDepth>
<MinimumMessageCount>5</MinimumMessageCount>
<AverageMessageCount>10</AverageMessageCount>
<MaximumMessageCount>15</MaximumMessageCount>
<UseOrdinalFolderName>false</UseOrdinalFolderName>
</PublicStoreProfile>
32
<ConcurrencyPercent>100</ConcurrencyPercent>
<Label>The first two hour has 100% of user participation</Label>
</ConcurrencyListEntry>
<ConcurrencyListEntry>
<Duration>P0Y0M0DT6H0M0S</Duration>
<ConcurrencyPercent>80</ConcurrencyPercent>
<Label>The rest of the day only has 80% of user running the load</Label>
</ConcurrencyListEntry>
</ConcurrencyTimeline>
</ConcurrencyProfile>
Note:
There is no protocol memory validation for any client protocol other than Microsoft Office
Outlook.
The parameters of InternalMemoryCheck are described in the following table.
Parameter Comment
33
Parameter Comment
34
How to Configure Thresholds for Performance Counter Values
How to Configure Thresholds for Service Status Detection
How to Configure Thresholds for Events Detection
How to Specify Custom Authentication
How to Enable Threshold Detection Logging
35
<NumberOfSamples>10</NumberOfSamples>
</PerfHealthEntity>
2. To fail or stop the simulation based on invalid counters, such as the target computer
name and performance counter names, specify the XML attribute
AbortOnInvalidCounters="true" in the <PerfHealthEntity> tag. For example:
<PerfHealthEntity Name="Rule1" AbortOnInvalidCounters="true"
FailOnInvalidCounters="true">.
3. Performance counters that do not exist or are not yet initialized when the threshold
detection starts are skipped by default. To initialize these counters for threshold detection
later when they become available, add the XML attribute WaitCounter="true" to the
<PerfHealthEntity> tag.
4. If the property values such as <TargetMachine> and <DelayStart> under
<PerfHealthEntity> are not specified, the default values are taken from those under
<NodeMonitorGroup>.
5. To disable threshold collection for a particular group, add the attribute Enabled to the
<TopologyMonitorGroup> tag. For example, <TopologyMonitorGroup
Enabled="False">.
36
<PollFrequency>P0Y0M0DT0H0M5S</PollFrequency>
<DelayStartTime>P0Y0M0DT0H0M3S</DelayStartTime>
</ServiceHealthEntity>
</ServiceHealthEntities>
3. Specify the number of attempts if ResumeService is set to true. This is the maximum
number of attempts that resumptions of the stopped service will be made.
4. Add a separate <ServiceHealthEntity> tag for each different service, or on different
computers under the <ServiceHealthEntities> tag.
5. The value in <TargetMachine> under the <NodeMonitorGroup> tag will be used if it is
not specified under the <ServiceHealthEntity> tag.
37
How to Specify Custom Authentication
For computers that require custom authentication to access system resources, you can specify
the authentication under the <ExtendedProperties> tag.
38
<add name="my.log" /> </listeners> </source>
</sources> <sharedListeners> <add name="my.log"
type="Microsoft.Exchange.Swordfish.FileLogTraceListener"
initializeData="my.log" autoflush="true" maxfilesize="1048576" />
<add name="mainConsole"
type="System.Diagnostics.DefaultTraceListener" />
</sharedListeners> </system.diagnostics>
Note:
Make sure that you start the Microsoft Exchange Load Generator Remote Agent service
on the remote load generator before you start the simulation.
Note:
Although the master computer can also be configured as a load generator, we do
not recommend that you do this. This is because the Exchange Load Generator
counters will no longer be accurate.
Note:
If LoadBalancing is set to "true", users will be evenly distributed to remote load
generators at the beginning and Exchange Load Generator will monitor the load
on the remote client. Users will be reduced if the remote client is overloaded, or
more users will be assigned if the remote client is underloaded. If LoadBalancing
is set to "false", users will be distributed to remote load generators evenly, but
39
load balancing will not be done.
To specify which remote load generator to run for specific user groups
1. In the LoadGenConfig.xml file (or whatever you named the file), locate the
<RemoteProfile> tag followed by the <EnableRemoteDistribution> tag.
2. Make sure that the value between the start tags and the end tags is "true".
3. Change the file as follows:
<EnablePerUserGroupDistribution>true</EnablePerUserGroupDistribution>
<RemoteLoadGenerators>
<RemoteLoadGenerator Name="Remote LoadGenerator 1">
<UserGroups>
<Name>UserGroup1</Name>
</UserGroups>
</RemoteLoadGenerator>
<RemoteLoadGenerator Name="Remote Load Generator 2">
<UserGroups>
<Name>UserGroup2</Name>
40
</UserGroups></RemoteLoadGenerator>
</RemoteLoadGenerators>
<LogLevel>Verbose</LogLevel>
<PerfmonCountersRefreshTimeinSeconds>5</PerfmonCountersRefreshTimeinSeconds>
<LoadBalancing>true</LoadBalancing>
</RemoteProfile>
Note:
You cannot have load balancing and EnablePerUserGroupDistribution turned on at
the same time. This is because load balancing involves moving users around, and
that would probably violate the user group definition for each remote load generator.
41
<DisableRpcUniqueBinding>false</DisableRpcUniqueBinding>
<DisableMapiEncryption>false</DisableMapiEncryption>
</TaskParameters>
Notes:
RpcHttpAuthenticationType can be either NTLM or Basic. If RpcHttpProxyServer is
not set, a Client Access server will be randomly selected from the list of Client Access
servers that are defined with the <ClientAccessServers/> tag. The format of the
definition is as follows:
<ClientAccessServers>
<string>CAS-SERVER1.mydomain.com</string>
<string>CAS-SERVER2.mydomain.com</string>
</ClientAccessServers>
Note:
If you want Exchange Load Generator to automatically load-balance RPC over
HTTPs between the Client Access servers that are specified in the configuration file,
delete the following line in the file: <Item Name="RpcHttpProxyServer"
Type="string">yourservername</Item>
Note:
Initialization can take several hours, or even a full day(s), to finish.
42
The procedure in this topic describes how to initialize the test using the command line and the
configuration file. When you use this method, you must run a separate command for the mailbox
store and for the public store.
If you use the graphical user interface, the mailbox store and public store initialization is
automatically done together. You can step through the user interface until you are at the
Configuration summary page, where you are given two choices:
Start the initialization phase. We recommend that you do this before you run the test.
Skip the initialization phase and run the simulation immediately
Important
To view detailed trace information about the actions that the tool is doing, you can add a trace
listener as a command-line option. Trace listeners can be files. Alternatively, they can be the
console if you want to view the output on screen. To view the output on screen, add the
option /add console. To output the trace.log, add the /add trace.log option at the command
line. For example:
C: \Program Files\Exchange Server Load Generator>LoadGenCmd.exe /i
/add trace.log
Microsoft Exchange Load Generator
Configuring LoadGen task engine
Load settings
NOTE: There are no trace listeners found. You can add/remove shared
trace listeners.
Starting mailbox initialization
3. Monitor the progress of initialization tasks by using performance counters. Click Start,
click Run, type perfmon, and then click OK.
4. Add the following performance counters to your view:
Exchange Load Generator(_Total)\Task Queue Length
Exchange Load Generator(_Total)\Tasks Completed
Exchange Load Generator(_Total)\Tasks Dispatched
The Tasks Dispatched counter equals the number of users whom you have
configured for the test. One initialization task is dispatched for each user during the
43
initialization process. The Tasks Completed counter shows the number of initialization
tasks that have been completed. This value slowly increases to equal the value of the
Tasks Dispatched counter until the initialization process is complete. The Tasks
Queue Length counter displays the number of tasks that remain to be run. This value
goes to zero when the initialization process is finished.
5. To cancel the initialization process, see How to Stop the Simulation Process.
Note:
During initialization, Exchange Load Generator will stop if it encounters errors
such as network errors or errors connecting to the Exchange server or
Active Directory. If you restart the initialization after you resolve the errors,
Exchange Load Generator restarts with the first user. It does not delete and re-
create the messages already in the Inbox and folders. This applies also to
Calendar items and Contacts.
6. If you decide to initialize public folders, run the command LoadGenCmd.exe /p /c
<configuration file>, where configuration file is the name of your configuration file.
Exchange Load Generator randomly determines the number of subfolders and messages
in each folder, based on the minimum, maximum, and average parameters that are set in
<PublicStoreProfile>.
When Exchange Load Generator determines the number of subfolders and messages to
create, it will create them if the number of existing folders is less. Alternatively, Exchange
Load Generator will delete some existing public folders if the number of existing folders is
more. If Exchange Load Generator stops the initialization, when you run it again and
decide to initialize public folders again, the number of subfolders and messages
Exchange Load Generator creates will not necessarily match the numbers from the
previous initialization. We recommend that you delete all existing public folders before
you run initialization again.
44
should include at least two hours where the server has reached a sustained baseline of
consistent behavior.
For information about performance counters and running Performance Monitor (Perfmon) so that
you can monitor the progress of the simulation, see Performance Counters Reference.
Important:
To view detailed trace information about the actions that the tool is performing,
you can add a "trace listener" as a command-line option. Trace listeners can be
either files or the console, if you want to view the output on screen. To view the
output on screen, add this option to the command line: /add console. To output
to a file that is named trace log, add this option to the command line: /add
trace.log.
5. For running a test using the user interface, after you have opened the user interface,
follow the instructions on the Welcome page to Start a new test.
45
Running Exchange Load Generator as a
Command-Line Program
There are several tasks or actions that you can run for Exchange Load Generator by using the
command-line program LoadGenCmd.exe. One of the key tasks is to generate the generic
configuration file. You must do this in order to set up the adjustable parameters for the test.
When you start Exchange Load Generator at a command prompt, you must indicate if you want
to initialize users or run a simulation. You cannot do these tasks from the same command. You
must run Exchange Load Generator separately for each task. Additionally, you must create user
accounts before generating a configuration file.
To run Exchange Load Generator at a command prompt, locate the LoadGenCmd.exe program,
which is in the directory where Exchange Load Generator was installed. Click Start, click Run,
and type cmd. If it is required, change the directory path to the path of the LoadGenCmd.exe
program, and continue with running the applicable tasks.
The syntax for running Exchange Load Generator as a command-line program is as follows:
LoadGenCmd [Action Argument] [Configuration Argument]
The configuration argument is Config [filename] = Config file (default is /c) LoadGenConfig.xml.
The following table presents action arguments with their examples of use.
46
Running Exchange Load Generator Tasks
The default task parameters for Microsoft Exchange Load Generator are set up in the
LoadGenConfig.xml file. This can be generated by using the command LoadGenCmd.exe /g.
To customize the test tasks, you have to edit the configuration file and save it to a directory of
your choice. You can also rename it if you choose.
Access the configuration file in either of the following two ways.
From the command-line tool: LoadGenCmd.exe /r /c <path>\<config.xml>
From the user interface: After you have started the user interface by clicking
LoadGenWin.exe in the installation directory, select the file from the Start a new test
screen.
This topic includes information about how to set up the task information from the command line
(LoadGenCmd.exe) and from the user interface (LoadGenWin.exe).
Note:
You can edit the XML file by using an editor of your choice. To download XML Notepad
2007, go to the XML Downloads page at http://go.microsoft.com/fwlink/?linkid=8078.
A typical scenario for setting parameters is as follows:
Generate a new configuration file by using LoadGenCmd.exe /g.
Open the configuration file and change parameters as required. Important XML tags include
<ActionProfile> and <ActionCount>.
There is an <ActionProfile> tag for each defined user group. This tag indicates the start
of the XML that is related to tasks and their parameters, for a particular user group.
In the XML script, a task is of the format <tasknameActionCount>. Therefore, for the
logon task, this would be <LogonActionCount>.
Additionally, <ActionProfile> has the Name attribute, which will have one of the following
values: Light, Average, Heavy, Light, VeryHeavy, etc, or Custom (same as the UI drop
down). If you select the Custom profile (<ActionProfile Name="Custom">), the task
parameters can be changed according to the user requirements of the simulation.
Caution:
We encourage you to use the above well-known profiles that are provided by
Exchange Load Generator. Avoid creating a custom profile unless you are very
familiar with Exchange Load Generator parameters, and you understand what
type of difference your customization will make in terms of the load that is
generated on the server.
47
Running the Simulation Using LoadGenCmd.exe
When the action profile has been set, run LoadGenCmd.exe /r /c config.xml. This runs the
simulation based on the configuration.
48
Logon
MailboxStoreProfile
MakeAppointment
MoveMail
PostFreeBusy
PublicFolderPost
PublicStoreProfile
ReadAndProcessMessages
RequestMeeting
SendMail
Search
49
test. If the per-user rate of events that Exchange Load Generator generates is different for the
control client and the other clients, your experiment is invalid because the workload that is
generated is incorrect. If your other client computers are bottlenecked, they will generate less
than the expected requests. Additionally, if you compare the response times between the
regular clients and the control client, you can help determine whether the number of users per
client computer is affecting the results.
What was the actual load on the server with regard to transactions per user per day? Does
this match the expected value?
Make sure that you answer these two questions. To better understand the accuracy of the
test and the performance characteristics of a server, consider the actual work that the server
performed. If the server performed a different amount of work than expected, your test
represents a different workload than intended.
Were there any server resources that were saturated? Were there any software queues
growing unbounded?
To verify this we suggest you use the performance counters and thresholds that are specified
in the following locations.
Exchange 2010
http://technet.microsoft.com/en-us/library/dd335215.aspx
Exchange 2007
http://technet.microsoft.com/en-us/library/bb201720(EXCHG.80).aspx
To log all Exchange Load Generator counters and Exchange server counters to one
data log
1. Log on to the computer on the domain where you want to log all System Monitor data.
2. Open Services: Click Start, point to Programs, point to Administrative Tools, click
Computer Management, and then click Services.
3. In Services, in the results pane, under Name, right-click Performance Logs and Alerts,
and then click Properties.
4. In Performance Logs and Alerts Properties (Local Computer), click the Log On tab,
and then click This account.
5. Click Browse.
6. In Select User, select the domain administrator account, and then click OK.
7. On the Log On tab, in the Password box, type the password for the domain
administrator account.
8. In the Confirm password box, retype the password for the domain administrator
50
account.
9. Click OK.
10. Close Services.
11. Click Start, click Run, and then type perfmon.msc to access the Performance dialog
box.
12. In Performance, click System Monitor, and then click the Add (+) icon on the toolbar to
open the Add Counters dialog box.
13. In the Add Counters dialog box, click Select counters from computer, and then type
the server or client name in the corresponding list.
14. In the Performance object list, select the performance object to add. Minimally, you
should add Exchange Load Generator Engine and Exchange Load Generator User
Groups for each client.
15. Click All counters to add all counters for the object, or click Select counters from list to
individually select the counters to be added for the object.
16. Repeat Steps 14 and 15 for each performance object to be monitored for this computer.
17. Repeat Steps 12 to 16 for each additional client or server for which you want to
consolidate the logs.
51
RPC over HTTP
To use RPC over HTTP, your topology has to be configured to use one or more RPC proxy
servers. Instructions for doing this using the configuration file are in the topic, Customizing the
Exchange Load Generator Test. The following are two recommendations for user loads when you
use RPC over HTTP.
52
For Exchange 2007 information, use the Set-DynamicDistributionGroup and Set-
DistributionGroup cmdlets to modify the settings. Both these cmdlets have an ExpansionServer
parameter. Detailed information about cmdlets is in the Exchange 2007 Online Help at
http://go.microsoft.com/fwlink/?linkid=76150.
Important:
Although Exchange Load Generator can be used to verify your deployment in various
ways, it should not be used in production environments.
We recommend that Exchange Load Generator be run for verification in separate topologies and
then rolled out on production environments. Also, it is a good idea to run each Exchange Load
Generator test multiple times. This will help make sure of the validity of your results.
Caution:
We encourage you to use the well-known profiles such as "Heavy" that are provided by
Exchange Load Generator. Avoid creating a custom profile unless you are very familiar
with Exchange Load Generator parameters, and you understand what type of difference
your customization will make in terms of the load that is generated on the server.
To control the stress load that Exchange Load Generator puts on the Exchange server, you can
change the duration settings of the simulation in the Specify test settings page of the user
interface, and enable or disable tasks. Exchange Load Generator calculates the stress from the
frequencies of the tasks, and then spreads the load homogeneously across the configured length
of the simulation day. For example, if Exchange Load Generator must run a task four times in an
eight-hour daytime period, it will run a task every two hours. By increasing the task frequency to
eight times a day and keeping the length of the simulation day setting the same, a task will be run
every hour, thereby doubling the stress load. Therefore, if the length of the simulation day
increased, the stress is actually diminished, because the same load is spread over a longer time.
To increase the stress load, increase the task frequencies and/or reduce the simulation day
length.
53
Re-create the Topology Every Time a Topology Setting Changes
After you change the topology settings, you should re-create the topology to make sure that the
physical topology matches your settings.
Note:
Backing up and restoring databases to skip repeating the initialization phase makes
sense only if the initialization and topology settings are unchanged between test runs for
the server in question.
54
Public Folders
Exchange Load Generator has two public folder tasks: Public Folder Post and Browse Public
Folder. Both tasks will choose any public folder in the MAPI TLH (the default public folder root),
except for one named Internet Newsgroups.
Exchange Load Generator can choose other folders to browse or post, even if it did not create
them. Therefore, in such an attempt, Exchange Load Generator may not always run some tasks
and indicate it had access denied. We recommend that you have only the public folders that were
created by Exchange Load Generator.
When Exchange Load Generator creates its public folders, it changes the permissions to give
owner rights as default. This means that any user can edit, delete, or add new posts. This is
required for Exchange Load Generator to simulate multiple users when logging on to users using
their respective accounts. If the permissions are changed in any way, Exchange Load Generator
might not always create posts or browse the public folders.
55
In the first step, Exchange Load Generator calculates the number of tasks that need to run per
user group. This is the sum of all task frequencies multiplied by the number of users.
In the second step, Exchange Load Generator sums the number of tasks of all the user groups
that the client computer that the test is running on is configured to do. In other words, this is the
result of the calculation from the first step. The summed task is spread across the total duration of
the simulation. The duration values are set in the Specify test settings page in the user interface
as follows:
The length of a 'simulation day' defined in hours, minutes, and seconds
The total length of the simulation defined as forever, or as a specified duration (in hours,
minutes, and seconds)
For example, if there is one group that has 100 users and will run the Send Mail task 10 times in
an eight-hour configuration, Exchange Load Generator will spread 1,000 tasks across eight
hours, running each task every 347 milliseconds (1,000 divided by 8 hours).
Independently of the concurrency settings, the duration of the simulation will stop the test after a
designated elapsed time is started. For the previous example, if the duration of the simulation
was two or eight hours, the tasks would still run every 347 milliseconds. The difference is that the
test would stop in two and eight hours, respectively.
Finally, there is an additional option: stress mode. In stress mode, Exchange Load Generator
ignores the concurrency settings and task frequencies. It runs the tasks back-to-back and without
a wait for the duration of the simulation. For example, if the duration of the simulation was set to
eight hours, the tasks would run for eight hours without the 347 millisecond wait between them.
Because only the client, server, and network configurations limit this mode, results will vary
extensively from setup to setup. Therefore, we do not recommend this mode for comparing
computers or for sizing.
The dynamic mail generator is setup by default for initialization as well as sending mail.
We currently do not have a UI for this feature. You will have to customize your Loadgen XML to
change the default settings.
56
<TaskCount>0</TaskCount>
<TaskParameters d6p1:type="GeneratedMailParameters">
<MessageSizeParameters>
<MinimumSize>100</MinimumSize>
<MaximumSize>100000</MaximumSize>
<AverageSize>30000</AverageSize>
</MessageSizeParameters>
<LanguageParameters>
<EnglishLanguageWeight>100</EnglishLanguageWeight>
<FrenchLanguageWeight>0</FrenchLanguageWeight>
<KoreanLanguageWeight>0</KoreanLanguageWeight>
<SpanishLanguageWeight>0</SpanishLanguageWeight>
<TurkishLanguageWeight>0</TurkishLanguageWeight>
</LanguageParameters>
<BodyTypeParameters>
<HtmlBodyWeight>70</HtmlBodyWeight>
<PlainTextBodyWeight>5</PlainTextBodyWeight>
<RtfBodyWeight>15</RtfBodyWeight>
</BodyTypeParameters>
<AttachmentParameters>
<AttachFrequency>0.05</AttachFrequency>
<AttachmentCount>
<MinimumCount>1</MinimumCount>
<MaximumCount>5</MaximumCount>
<AverageCount>1</AverageCount>
</AttachmentCount>
<PercentInfected>0</PercentInfected>
<MessageFiles>
<MessageFile>
<Weight>840</Weight>
<Pathname>messages\msg00001.msg</Pathname>
</MessageFile>
</MessageFiles>
</AttachmentParameters>
</TaskParameters>
</TaskConfig>
</TaskConfigList>
<WellKnownProfileType>Default</WellKnownProfileType>
</GeneratedMailProfile>
In order to use attachments specify them in the following location:
<MessageFiles>
<MessageFile>
<Weight>840</Weight>
<Pathname>messages\msg00001.msg</Pathname>
</MessageFile>
</MessageFiles>
57
in the Send Mail task and it is also used by individual mailbox initialization. The latter is defined in
the Public Folder Post task.
Exchange Load Generator has one message set for public store initialization. It is also configured
in the LoadGenConfig.xml file.
You can use any MSG MAPI message that is formatted correctly with Exchange Load Generator.
The following table lists the message mix of the files that are downloaded to the installation
directory. The attachments can be documents, clip art, spreadsheets, or any type recognized by
the client mail application.
Exchange Load Generator loads in memory all messages used from both message sets, per user
group. This means that if you have multiple user groups, even if with the same list of messages to
be used, they will be loaded separately and occupy more space in memory. Additionally, the
overall memory consumption of Exchange Load Generator increases if many custom messages
are used.
The following table lists the message mix of the files that are downloaded to the installation
directory. Use these files as is, or customize for your test simulation.
58
File name Content type Size (in bytes) in DAV
59
File name Content type Size (in bytes) in DAV
Note:
Do not use the Exchange Load Generator latency counters as a measure of acceptable
performance with regard to latency. Instead, use the RPC averaged latency counter on
the server.
Counter Purpose
60
Counter Purpose
Counter Purpose
Browse Calendar Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Browse
Calendar action
61
Counter Purpose
Browse Contacts Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Browse
Contacts action
Browse Public Folder Action Latency Average time (in milliseconds) taken to
complete a Browse Public Folder action
Browse Public Folder Actions Total Browse Public Folder actions executed
Browse Public Folder Actions/sec. Count of Browse Public Folder actions executed
per second
Browse Public Folder Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Browse
Public Folder action
Browse Tasks Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Browse Tasks
action
Create Contact Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create
Content action
Create Folder Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create Folder
action
62
Counter Purpose
Create Task Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Create Task
action
Delete Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Delete Mail
action
Download OAB Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Download
OAB action
Edit Rules Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete an Edit Rules
action
Edit Smart Folders Action Latency Average time (in milliseconds) taken to
complete an Edit Smart Folders action
Edit Smart Folders Actions Total Edit Smart Folders actions executed
63
Counter Purpose
Edit Smart Folders Actions/sec. Count of Edit Smart Folders actions executed
per second
Edit Smart Folders Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete an Edit Smart
Folders action
Export Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete an Export Mail
action
Initialize Mailbox Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete an Initialize
Mailbox action
Logoff Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Logoff action
Logon Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Logon action
64
Counter Purpose
Make Appointment Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Make
Appointment action
Move Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Move Mail
action
Not Implemented Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Not
Implemented action
Post Free Busy Action Latency Average time (in milliseconds) taken to
complete a Post Free Busy action
Post Free Busy Actions Total Post Free Busy actions executed
Post Free Busy Actions/sec. Count of Post Free Busy actions executed per
second
Post Free Busy Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Post Free
Busy action
Public Folder Post Action Latency Average time (in milliseconds) taken to
complete a Public Folder Post action
Public Folder Post Actions Total Public Folder Post actions executed
65
Counter Purpose
Public Folder Post Actions/sec. Count of Public Folder Post actions executed
per second
Public Folder Post Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Public Folder
Post action
Read And Process Messages Action Latency Average time (in milliseconds) taken to
complete a Read And Process Messages action
Read And Process Messages Actions Total Read And Process Messages actions
executed
Read And Process Messages Actions/sec. Count of Read And Process Messages actions
executed per second
Read and Process Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Read and
Process action
Request Meeting Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Request
Meeting action
Search Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Search action
Send Mail Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a Send Mail
66
Counter Purpose
action
Synchronize Folders Action Latency (95th The 95th percentile value of the time (in
Percentile) milliseconds) taken to complete a Synchronize
Folders action
User Init Action Latency (95th Percentile) The 95th percentile value of the time (in
milliseconds) taken to complete a User Init
action
User Term Action Latency The 95th percentile value of the time (in
milliseconds) taken to complete a User Term
action
67
Counter Purpose
configuration
Tag Description
68
Tag Description
69
<ClientType>Owa2007Module</ClientType> - OWA Module for Exchange 2007
Note:
Instances of variables and verbs are not related. That is, SEQULIST will be sequential for
each script instance.
Table of Verbs
The following table lists the verbs and their functions.
Verb Function
70
Verb Function
Matches "samesequnumber\\(([0-9,]+\\))"
Example: SAMESEQUNUMBER(0,10) returns 1
71
Verb Function
SEQUUSER Selects the next user from the list of users in the
UserGroup.
Information available: username, password, e-
mail, domain
Matches "SEQUUSER.[a-zA-Z]+"
Example: SEQUUSER.username returns
user21
Variable Behavior
All script-based modules support simple variables which enable you to store values and do
simple operations. Declaration and initial value is:
The default value is string.empty.
There are 2 types: string and integer.
There are no operators in the SET command.
The reserved patterns are "\$[^\$^ ]+\$" and "~userVar".
SET <$var$> [initial value]
72
SET $myvar$
SET $myvar1$ 1
SET $myVAR2$ the world
SET $MyVar3$ RANDNUMBER(0,1)
NO SET $MyVar4$ $Myvar3$
NO RANDNUMBER(0,$myVar$)
Integer Operators
All operations return a string: += and -=. Change the value of the left operand. Operations other
than SET on a string variable return the unchanged value of the variable. Precedence is right to
left replacement with the universal variables being replaced first.
+
$myvar$ + 4
$myVar$ + $myvar2$
$myVar$ + RANDNUMBER(0,100)
++
$myvar$++
+=
$myvar$ += 5
$myvar$+=$myvar2$
-
$myvar$ - 4
$myVar$ - $myvar2$
$myVar$ - RANDNUMBER(0,100)
--
$myvar$--
-=
$myvar$ -= 5
$myvar$ -= $myvar2$
73
This module also implements performance counters for protocol statistics. Additionally, you can
log client actions and server responses during a test run. You cannot configure the events that
are logged.
Sample Script
The following is sample script for running the POP3 module.
REM. Assumes that there are at least 10 items in the Inbox.
74
CONNECT
STLS
LOGON
STAT
LIST
UIDL RANDNUMBER(1,10)
RETR RANDNUMBER(1,9)
TOP 1 10
DELE 4
SLEEP RANDNUMBER(0,20)
RSET
SLEEP RANDNUMBER(0,20)
NOOP
QUIT
SLEEP RANDNUMBER(1800,2400)
75
Script verb Function
MAIL FROM <smtp address> Sends the MAIL FROM command. Defaults to
current user.
NOOP Do nothing.
Sample Script
The following is sample script for running the SMTP module.
CONNECT
EHLO ADMIN
STARTTLS
EHLO
AUTH NTLM
MAIL FROM: user.emailaddress
RCPT TO: SEQUUSER.emailaddress
RCPT TO: RANDUSER.emailaddress
RCPT TO: NEARBY.emailaddress
RCPT TO:
%40 RCPT TO:
%30 RCPT TO:
BDAT RANDLIST(d:\loadgen\perfbh\Exiser-Perf-BH-Inbound-messages.txt)
NOOP
QUIT
Sleep RANDNUMBER(500,1000)
76
The IMAP4 Module
The Internet Message Access Protocol version 4 (IMAP4) module simulates multiple clients using
the IMAP4 protocol. The module supports parameters for configuring the following:
Different protocol-specific options
Options for how the test executes
Security options
Examples of options are the server that this client is targeting or the port number. Client actions
are simulated by running a script that contains scripted module keywords and IMAP4 verbs.
This module also implements performance counters for protocol statistics. Additionally, you can
log client actions and server responses during a test run. You cannot configure the events that
are logged.
APPEND <mailbox name> <file name> Appends the contents of <filename> to the
mailbox.
FETCH <num><msg data item string> Returns the item or set of items.
77
Script verb Function
NOOP Do nothing.
STATUS <mailbox name> Returns the status of a specified mailbox and its
attributes.
UIDFETCH <num><msg data item set> Uses the UID to fetch an object.
Sample Script
The following is sample script for running the IMAP4 module.
REM # This script assumes the presence of at least 10 message currently
in the users INBOX
REM # And will create said structure
REM # This script will leave the INBOX with the first 10 messages of the
INBOX remaining... all others will be purged.
CONNECT
STARTTLS
REM LOGIN
78
AUTHENTICATE NTLM
SLEEP RANDNUMBER(0,100)
CAPABILITY
SELECT "INBOX"
LOOP 10
APPEND "INBOX" .\scripts\file1.txt
SLEEP RANDNUMBER(0,100)
ENDLOOP
LOGOUT
CONNECT
STARTTLS
LOGIN
SELECT "INBOX"
CREATE "BackMeUp"
COPY 1:10 "BackMeUp"
CREATE "Other Mail"
CREATE "Trash"
IDLE
DONE
LIST "" "*"
SELECT "INBOX"
FETCHUID
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
UIDFETCH FIRST 1 (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 2 "Other Mail"
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
79
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 2 "Other Mail"
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(100,120)
UIDCOPY 1 "Trash"
UIDSTORE 1 +FLAGS (\Deleted)
CHECK
SLEEP RANDNUMBER(1000,2000)
NOOP
FETCH LAST 1 (UID)
UIDCOPY LAST 2 "Other Mail"
UIDSTORE LAST 2 +FLAGS (\Deleted)
CLOSE
SELECT "Other Mail"
FETCHUID
UIDFETCH 1:* (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
UIDFETCH FIRST 1 (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
UIDFETCH NEXT (UID RFC822.SIZE RFC822)
SLEEP RANDNUMBER(1000,2000)
FETCHUID
UIDCOPY LAST 4 "Trash"
UIDSTORE LAST 4 +FLAGS (\Deleted)
SLEEP RANDNUMBER(1000,2000)
80
CLOSE
SELECT "INBOX"
FETCHUID
UIDFETCH 1:10 (FLAGS)
UIDFETCH UIDALL (UID RFC822.SIZE rfc822.header)
NOOP
SLEEP RANDNUMBER(1000,2000)
UIDCOPY LAST 5 "Trash"
UIDSTORE UIDALL +FLAGS (\Deleted)
EXPUNGE
CLOSE
SELECT "TRASH"
STORE ALL +FLAGS (\DELETED)
EXPUNGE
LIST "TRASH" "*"
DELETE "Other Mail"
DELETE "TRASH"
CLOSE
SELECT "BackMeUp"
COPY 1:10 "INBOX"
DELETE "BackMeUp"
LOGOUT
SKIP(12)
81
There is also a topic about how to use CreateCerts, which is a tool that enables a tester to create
certificates to stress-test S/MIME features.
82
Documents module commands
Contacts module commands
Address Book module commands
Tasks module commands
Calendar module commands
General Commands
Logon Sequence Commands
A user logon is required for any actions in a test script that is to be executed. In the Outlook Web
Access module, a logon sequence consists of the following three parts:
retrieve the authentication page
authenticate
log on
Logon information (for example, server name, domain name, user name and password) is read
from the configuration profile. The command syntax for the logon sequence is as follows:
GetAuthenticationPage
Auth
Logon
If this is the first time a user logs on, there will be a request to display the language selection
page.
Logoff Command
The Logoff command simulates a user logging out of Outlook Web Access. The command syntax
is as follows:
Logoff
Refresh Command
The Refresh command is the equivalent of clicking Check for New Messages. The script writer
can specify which folder to refresh for the command. Otherwise, the default value will be the
currently active folder. The command syntax is as follows:
Refresh <folder name>
An example of command usage is as follows:
Refresh Inbox
Be aware that this command updates the current mailbox state object to reflect the currently
loaded items.
PublicFolderModule Command
The PublicFolderModule command is the equivalent of navigating to the Public Folder module
whereby the public folder can be handled like a normal folder. The command syntax is as follows:
PublicFolderModule
An example of command usage is as follows:
PublicFolderModule
83
OpenFolder publicfolder
Note that the user will operate the Public Folder object.
Poll Command
A Poll command is sent from the client to the server to obtain notifications. The interval can be
customized from the xml properties file. This command is implicitly called by the module. That is,
it does not need to be explicitly defined in the test script. The command syntax is as follows:
Poll
Note:
The command sends a DismissReminders request if there are any reminders.
Additionally, the command sends a Refresh request if the mailbox has been changed.
DismissReminders Command
The DismissReminders command sends a request to dismiss all currently active reminders. The
command syntax is as follows:
DismissReminders
MarkAsRead Command
This command marks the currently active item as read. The command syntax is as follows:
MarkAsRead
Search Command
The Search command searches for a specified string under the specified search scope. If no
scope is specified, the default This Folder is used. The allowable scopes are:
ThisFolder
SubFolders
Everywhere
Alternatively, a search command can search the Global Address List (GAL) for a particular user,
specified by the search string. The command syntax is as follows:
Search <search scope> <search string>
Search AddressBook <search string>
An example of command usage is as follows:
Search ThisFolder SomeString
SpellCheck Command
The SpellCheck command does a spell check using the specified language for either a provided
string or the file specified by a full path. Valid languages are as follows:
Spanish
Arabic
Danish
Dutch
EnglishAustralia
EnglishCanada
84
EnglishUnitedKingdom
EnglishUnitedStates
Finnish
French
GermanPostReform
GermanPreReform
Hebrew
Italian
Korean
NorwegianBokmal
NorwegianNynorsk
PortuguesePortugal
PortugueseBrasil
Swedish
Catalan
If no language is specified, the default of EnglishUnitedStates is used. If no string or file path is
specified, a random alphanumeric string is used. The command syntax is as follows:
SpellCheck <language> <string/file path>
An example of command usage is as follows:
SpellCheck Finnish D:\myFinnishFile.txt
85
The command syntax is as follows:
OpenFolder <folder name>
An example of command usage is as follows:
OpenFolder Inbox
ComposeMail and ComposePost Commands
The ComposeMail and the ComposePost commands create a new message or post compose
form. The command syntax is as follows:
ComposeMail
ComposePost
SelectMail Command
The SelectMail command selects a message by the specified message subject. If no subject is
specified, a random item from the currently active folder is selected. Sets the currently active item
to the selected item. The command syntax is as follows:
SelectMail <message subject>
OpenPost and OpenMail Commands
The OpenPost and OpenMail commands open a message or post by the specified message or
post subject. If no subject is specified, a random message or post is opened from the currently
active folder. The command syntax is as follows:
OpenPost <post subject>
OpenMail <mail subject>
DeleteMail Command
The DeleteMail command deletes a message specified by the message subject. If no subject is
specified, a random item is deleted from the currently active folder. The command syntax is as
follows:
DeleteMail <message subject>
SendMail Command
The SendMail command sends a message to the previously resolved recipients (To, CC, and
BCC). If a compose form has already been opened (Reply, ReplyAll, Forward, or a New message
with attachments), that particular message is sent. If there are no compose forms opened, a new
message is sent. If the message is not a Reply or ReplyAll, run a CheckName command before
SendMail to resolve the recipients.
SendMail can also read in a file specifying mail options. The command syntax is as follows:
SendMail <subject/mail option file path>
An example of command usage is as follows:
CheckName user0
SendMail new message
SendPost Command
86
The SendPost command adds a Post message in the currently active folder. SendPost can read
in a file specifying mail options. The command syntax is as follows:
SendPost <subject/mail option file path>
Reply Command
The Reply command replies to the message specified by the subject. If the subject is not
specified, reply to the currently active item in the active folder. If there is no active item either,
reply to a random item in the active folder. This command does not actually send the message. It
only opens the compose form. A SendMail command is required after the form has opened. The
command syntax is as follows:
Reply <message subject>
An example of command usage is as follows:
Reply hello
SendMail
PostReply Command
The PostReply command adds a post reply to the item specified by the message subject. If no
subject is specified, reply to the active item in the active folder. The command syntax is as
follows:
PostReply <message subject>
ReplyAll Command
The ReplyAll command replies to all users to the message specified by the subject. If the subject
is not specified, reply to the currently active item in the active folder. If there is no active item
either, reply to a random item in the active folder. This command does not actually send the
message. It only opens the compose form. A SendMail command is required after the ReplyAll
command has been specified. The command syntax is as follows:
ReplyAll <message subject>
An example of command usage is as follows:
ReplyAll hello
SendMail
Forward Command
The Forward command forwards the message specified by the subject. If no subject is specified,
forward the currently active item in the active folder. If there is no active item either, forward a
random item in the active folder. This command does not actually send the message. It only
opens the compose form. A SendMail command is required after the Forward command has been
specified.
Additionally, the script writer needs to run the CheckName command before forwarding to resolve
the recipients. The command syntax is as follows:
Forward <message subject>
An example of command usage is as follows:
Forward hello
87
CheckName user1
SendMail
ExpandFolder Command
The ExpandFolder command expands the folder specified by the folder name. The command
syntax is as follows:
ExpandFolder <folder name>
AttachFile Command
The AttachFile command attaches the files specified by their full paths. The script writer must
specify one to three files, delimited by the comma (,) character. If the wrong number of files or an
invalid file path is specified, no files are attached. The files would be attached to the currently
active compose message form. The command syntax is as follows:
AttachFile <file paths>
An example of command usage is as follows:
Reply
AttachFile D:\file1.txt,D:\file2.txt
SendMail
OpenSmimeMail Command
The OpenSmimeMail command opens an S/MIME message by the specified message subject. If
no subject is specified, a random message is opened from the currently active folder. The
command syntax is as follows:
OpenSmimeMail <mail subject>
GetCerts Command
The GetCerts command gets a certificate from the Client Access server for the previously
resolved recipients (To). A CheckName command should be done before GetCerts for the
resolved recipients. The command syntax is as follows:
GetCerts
An example of command usage is as follows:
CheckName user1
GetCerts
ValidateCerts Command
The ValidateCerts command validates that the specified certificate file is valid and trusted. If no
file is specified, a default file named user.pfx is validated. The command only simulates the
process to validate a certificate before sending a signed or signed&encrypted message. This is
not identical to the actual process wherein the certificate to validate is read from the store of the
current user, not a file on disk. The command syntax is as follows:
ValidateCerts <certificate file path>
SendSmimeMail Command
The SendSmimeMail command sends an S/MIME message by the specified message file to the
previously resolved recipients (To, CC, and BCC). If no message file is specified, a default
88
message file smime.eml is sent. If no S/MIME message file is specified, this command fails. A
CheckName command should be done before SendSmimeMail to resolve the recipients. The
command syntax is as follows:
SendSmimeMail <smime message file path>
An example of command syntax is as follows:
CheckName user0
SendSmimeMail .\scripts\smime.eml
89
The ComposeContact command opens a new compose contact form. The command syntax is as
follows:
ComposeContact
Note:
Calls the GetPersonFreeBusy command to retrieve the persons free/busy schedule for
the week starting today.
OpenGalItem Command
The OpenGalItem command opens a GAL item with the specified name. If an item name is not
specified, a random item is selected. The command syntax is as follows:
OpenGalItem <item name>
GetPersonFreeBusy Command
The GetPersonFreeBusy command gets the Free/Busy schedule for the currently active GAL
entry. A valid GAL entry must be selected for this command to be used. The command syntax is
as follows:
GetPersonFreeBusy
This command advances the end date of the free/busy period by one week.
GetFreeBusy Command
90
The GetFreeBusy command gets the Free/Busy schedule for the current active GAL entry. A valid
GAL entry must be selected to be able to use this command. The command syntax is as follows:
GetFreeBusy
This command advances the end date of the free/busy period by one week.
91
The SaveAppointment command saves an appointment in the calendar. The command can read
from an options file. The command syntax is as follows:
SaveAppointment now
SaveAppointment <start date in the format yyyy-mm-ddThh:mm:ss>
SaveAppointment <options file>
SaveAppointment now <options file>
SaveAppointment now <subject>
SaveAppointment <start date> <options file>
SaveAppointment <start date> <subject>
SendMeeting Command
The SendMeeting command sends a meeting invitation to the previously resolved recipients
(requires a CheckName command). The command can read from an options file. The command
syntax is as follows:
SendMeeting now
SendMeeting <start date in the format yyyy-mm-ddThh:mm:ss>
SendMeeting <options file>
SendMeeting now <options file>
SendMeeting now <subject>
SendMeeting <start date> <options file>
SendMeeting <start date> <subject>
SaveMeeting Command
The SaveMeeting command saves a meeting invitation. The command can be read from an
options file. The command syntax is as follows:
SaveMeeting now
SaveMeeting <start date in the format yyyy-mm-ddThh:mm:ss>
SaveMeeting <options file>
SaveMeeting now <options file>
SaveMeeting now <subject>
SaveMeeting <start date> <options file>
SaveMeeting <start date> <subject>
NewAppointment and NewMeeting Commands
The NewAppointment and NewMeeting commands compose a new appointment or meeting form.
The commands usage is as follows:
NewAppointment/NewMeeting
OpenCalendarView Command
The OpenCalendarView command opens the calendar view module with the specified display
view type. The display view type can be:
92
Daily
Weekly
WorkWeek
Monthly
If no type is specified, the default type Daily is used. The command syntax is as follows:
OpenCalendarView <view type>
General
Q: How can I get the latest Exchange Load Generator?
A: Download the latest 32-bit or 64-bit version of Exchange Load Generator from Tools for
Performance and Scalability Evaluation. Even though this is for Exchange 2010 this version will
also work on Exchange 2007 topologies.
Q: Do I have to install Microsoft Office Outlook on the Exchange Load Generator client?
A: No.
Q: What is SwordfishExceptionTooMuchLoad? Why Im seeing this and how can I avoid it?
A: Exchange Load Generator throws SwordfishExceptionTooMuchLoad when the number of
unfinished tasks, including those in the queue and those being executed, is greater than 1.5 times
the number of users. It occurs because tasks are dispatched at a faster rate than they are being
executed. Either the server cannot keep up or something is causing really high latency, such as
network issues. The following performance counters show how fast tasks are dispatched and
completed: Exchange Load Generator Engine\Task Interval, Exchange Load Generator
Engine\Task Completed/sec, and Exchange Load Generator Engine\Task Dispatched/sec.
Exchange Load Generator is designed to give up if the task queue length becomes too high. This
prevents Exchange Load Generator from experiencing memory issues because of a very large
task queue and enables you to verify that there is a problem that has to be investigated sooner
instead of later.
To avoid this exception, first, make sure that there is no server side problem of slowing down task
execution. If the server performs normally, you can either adjust the task frequency so that the
tasks are dispatched at a rate at which they can actually be executed, or use stress mode. Stress
mode just executes tasks as quickly as possible based on how quickly tasks are completing.
Q: How does Exchange Load Generator determine the task dispatch rate?
93
A: Exchange Load Generator dispatches tasks at a certain rate, which is calculated by this
formula:
(simulated day length) / (total number of tasks need to be run during a simulated day across all
the user groups)
For each user group, the number of tasks to be run = number of users * number of tasks defined
by action profile.
Based on this calculation, you can adjust the task dispatch rate by changing the simulate day
length or the task action count in action profile or number of users.
Q: My simulation went well, but why do I see Failed in the report that is generated by
Exchange Load Generator?
A: The Exchange Load Generator report would indicate that a simulation failed if the following
condition was not met.
The actual run length must meet the following formula:
scheduled run length <= actual run length <= scheduled run length +
EngineStopTimeOutInSecs.
You can customize EngineStopTimeOutInSecs through the configuration file. By default, this
value is 5 minutes, which means the engine should be shut down within 5 minutes.
94
"INFO: Choosing the Debugger That the System Will Spawn" (http://go.microsoft.com/fwlink/?
linkid=3052&kbid=103861).
If you have Exchange Load Generator logging enabled, you can also check the log for a list of
exceptions that have been thrown.
Q: Does Exchange Load Generator fill the mailbox like LoadSim did? If so, where is the
user interface to set the size of the mailbox?
A: Exchange Load Generator fills the mailbox in much the same way as LoadSim. You can
configure how many items to create in a certain folder through the <MailboxStoreProfile> tag
within the Exchange Load Generator configuration file. However, these configurations are not
exposed through the user interface so if you are using LoadGenWin, after creating users and
defining user groups, you will have to save the configuration file and manually edit it if you want to
use a custom <MailboxStoreProfile> tag. After editing, you will need to reload it from the Start a
new test page for Exchange Load Generator to pick up the custom settings.
Q: What would you recommend for an index, or catalog size as a percentage of database
size?
A: Standard guidance for index or catalog size is 5 to 10% of the database size. Because of the
limited message set in Exchange Load Generator, we recommend that you allocate 25% of the
database size to accommodate catalog headroom. For additional information about content
indexing storage requirements, see Mailbox Server Storage Design for
Exchange 2007 (http://go.microsoft.com/fwlink/?linkid=106217) or Mailbox Server Storage Design
for Exchange 2010 (http://technet.microsoft.com/en-us/library/dd346703(EXCHG.140).aspx).
95
<ConcurrencyListEntry>
<Duration>P0Y0M0DT4H0M0S</Duration>
<ConcurrencyPercent>100</ConcurrencyPercent>
<Label>4 hours at 100%</Label>
</ConcurrencyListEntry>
<ConcurrencyListEntry>
<Duration>P0Y0M0DT4H0M0S</Duration>
<ConcurrencyPercent>60</ConcurrencyPercent>
<Label>4 hours at 60%</Label>
</ConcurrencyListEntry>
</ConcurrencyTimeline>
</ConcurrencyProfile>
Q: In LoadGenWin, I put in all the correct information including target forest, and user
credentials, but I still cannot connect to the topology. What do I have to do?
A: A successful connection requires that you can ping the target forest from the Exchange Load
Generator client. Try the command ping <targetforest> to make sure that it is reachable. If it is
not reachable, you can either substitute with the domain controller name if you can reach domain
controller or you have fix it with your domain name server.
Q: What should I type as remote load generators in LoadGenWin net BIOS name, full
computer name, or an IP address?
A: Any of these will work. But do not type the master client if you do not also intend it to be a
remote load generator. The same applies if you edit the <RemoteProfile> tag directly in the
configuration file. Before you run simulation in remote mode, you need to start LoadGenRemote
service on the remote clients. You can do this by running net start loadgenremote, or from
administrative tools->services window.
A: When you run stress mode against Exchange 2003 (SP1 or later versions) mailbox servers
using more than 32 Exchange Load Generator servers, you will hit a MAPI session limit.
Exchange Server 2003 SP1 imposes a restriction on the number of allowed MAPI sessions per
user. By default, the maximum is 32 sessions.
On the Exchange servers you will see the following event in the event log:
Event Type: Error Event Source: MSExchangeIS Event Category: General Event ID: 9646
Description: Closing Mapi session "/o=Organization/ou=Administrative
Group/cn=Recipients/cn=Recipient" because it exceeded the maximum of 32 objects of type
"session".
In the Exchange Load Generator log, you will see the following exception:
Engine.General Critical: 0 : 4/17/2007 12:19:27 PM -- Caught exception in executeTaskStub:
Microsoft.Mapi.MapiExceptionSessionLimit: MapiExceptionSessionLimit: Unable to make
connection to the server. (hr=0x80040112, ec=1246)
However, you can change the MAPI session limit by modifying a registry key. For more
information about MAPI session limits, see the Microsoft Knowledge Base article 842022, "Event
96
ID 9646 is logged in the application event log of your Exchange Server 2003 computer when a
client opens many MAPI sessions" (http://go.microsoft.com/fwlink/?linkid=3052&kbid=842022).
See the following procedure for changing the registry subkey.
Caution:
Incorrectly editing the registry can cause serious problems that may require that you
reinstall the operating system. Problems that result from editing the registry incorrectly
may be unable to be resolved. Before editing the registry, back up any valuable data.
A. If you get error 0xC002100A or 0x80090331 for clients running rpc/http you should grab
the update http://support.microsoft.com/kb/948963.
It works something like this (dont quote me on the 2.5 one, not quite sure about that one.)
97
V14.0 WM7.0 E14 and above
A. We have a new clause in the license agreement that forbids use in a live production
environment. Therefore usage for the tool in production is a violation of the license agreement
that you accepted when you installed the tool.
the data you get back may tell you where a server bottleneck is, but it could also be
bottlenecked on the client
given knowledge about a bottleneck, it's also difficult to translate that into anything useful for
server sizing or capacity planning because the actual workload isn't in any way realistic.
98
Q. Why should LoadBalancing be turned off?
A. If LoadBalancing is set to "true", users will be evenly distributed to remote load generators
at the beginning and Exchange Load Generator will monitor the load on the remote client.
Users will be reduced if the remote client is overloaded, or more users will be assigned if the
remote client is underloaded. If LoadBalancing is set to "false", users will be distributed to
remote load generators evenly, but load balancing will not be done.
The issue is that if all of your clients get overloaded we will logoff users and return them to
the master and we will no longer use them. So at the end of a test you could have 20 users
when you asked for 100.
This is the line of the XML that you need to have unique for both UserGroups. You will see
that both UserGroups contain this line.
<LdapSearchFilter>(&(objectcategory=person)(objectclass=user)
(homemdb=*))</LdapSearchFilter>
<LdapBaseDn>OU=Users,OU=LoadGen
Objects,DC=YUM,DC=lab</LdapBaseDn>
Next you will have to adjust the MailboxStoreProfile section for both UserGroups in order for
them to have different mailboxes sizes. We have default initialization profiles that match the
action profiles (Light, Average, Heavy, VeryHeavy). When you first set your action profile in
the UI we will set the intialization in that usergroup to match the value of the ActionProfile. We
have a bug that will reset your init settings back to heavy if you save the file in the UI or adjust
any values after you have made these changes. Below are the default mailbox initialization
settings.
<MailboxStoreProfile Name="Heavy">
<ExtendedProperties />
<InboxUnreadPercentage>0</InboxUnreadPercentage>
<NewFolderUnreadPercentage>0</NewFolderUnreadPercentage>
<BuildInboxRules>true</BuildInboxRules>
99
<FixUpInboxRules>false</FixUpInboxRules>
<InboxMessageCount>1640</InboxMessageCount>
<DeletedMessageCount>150</DeletedMessageCount>
<NewFolderCount>5</NewFolderCount>
<NewFolderMessageCount>100</NewFolderMessageCount>
<SmartFolderCount>3</SmartFolderCount>
<InboxRuleCount>17</InboxRuleCount>
<AppointmentCount>25</AppointmentCount>
<ContactCount>30</ContactCount>
<UseOrdinalFolderName>false</UseOrdinalFolderName>
<InitializeFreeBusy>true</InitializeFreeBusy>
<InitializeIndices>true</InitializeIndices>
<InitializeCachedModeIndices>false</InitializeCachedModeIndices>
<MessagePercentageRecent>0</MessagePercentageRecent>
<MessageRecentContentTimeFrame>-
P0Y0M0DT0H0M0S</MessageRecentContentTimeFrame>
<MessageContentTimeFrame>P0Y2M0DT0H0M0S</MessageContentTimeFrame>
<AppointmentPercentageRecent>0</AppointmentPercentageRecent>
<AppointmentRecentContentTimeFrame>-
P0Y0M0DT0H0M0S</AppointmentRecentContentTimeFrame>
<AppointmentContentTimeFrame>P1Y0M0DT0H0M0S</AppointmentContentTimeFr
ame>
<TaskCount>0</TaskCount>
</MailboxStoreProfile>
If you want to init with other profile sizes you can simply do the following:
1. Remove the entire MailboxStoreProfile section
2. Replace with <MailboxStoreProfile Name=<profile> />
3. This profile value can be set to Light, Average, Heavy or VeryHeavy
A. This can be done through the "Concurrency Profile". Set the concurrency profile from
100% to 20% and you will only use 20% of the active users in your LDAP Search Query.
- <ConcurrencyProfile Name="Heavy">
- <ConcurrencyTimeline>
- <ConcurrencyListEntry>
<Duration>P0Y0M1DT0H0M0S</Duration>
100
<ConcurrencyPercent>100</ConcurrencyPercent>
<Label>Full day at 100%</Label>
</ConcurrencyListEntry>
</ConcurrencyTimeline>
</ConcurrencyProfile>
101
Copyright
The information contained in this document represents the current view of Microsoft Corporation
on the issues discussed as of the date of publication. Because Microsoft must respond to
changing market conditions, it should not be interpreted to be a commitment on the part of
Microsoft, and Microsoft cannot guarantee the accuracy of any information presented after the
date of publication.
This White Paper is for informational purposes only. MICROSOFT MAKES NO WARRANTIES,
EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS DOCUMENT.
Complying with all applicable copyright laws is the responsibility of the user. Without limiting the
rights under copyright, no part of this document may be reproduced, stored in or introduced into a
retrieval system, or transmitted in any form or by any means (electronic, mechanical,
photocopying, recording, or otherwise), or for any purpose, without the express written permission
of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual
property rights covering subject matter in this document. Except as expressly provided in any
written license agreement from Microsoft, the furnishing of this document does not give you any
license to these patents, trademarks, copyrights, or other intellectual property.
Unless otherwise noted, the companies, organizations, products, domain names, e-mail
addresses, logos, people, places, and events depicted in examples herein are fictitious. No
association with any real company, organization, product, domain name, e-mail address, logo,
person, place, or event is intended or should be inferred.
2010 Microsoft Corporation. All rights reserved.
Microsoft, MS-DOS, Windows, Windows Server, Windows Vista, Active Directory, ActiveSync,
ActiveX, Entourage, Excel, FrontPage, Hotmail, JScript, Microsoft Press, MSDN, MSN, Outlook,
SharePoint, Visual Basic, Visual C++, Visual Studio, Win32, Windows Mobile, Windows NT, and
Windows Server System are either registered trademarks or trademarks of Microsoft Corporation
in the United States and/or other countries.
All other trademarks are property of their respective owners.
102