Written by Dan Erelis, Microsoft Premier Field Engineer based in Canada.
The design of a Microsoft Exchange 2010 infrastructure can be a daunting task. Countless hours are spent evaluating current loads, hardware and disk specifications, IOPS requirements and potential client activity/growth. Once you have achieved your goals in the design phase, testing and qualification of the solution is as equally important as the design itself. By performing pre-production testing of your architecture you will help flush out unknowns, errors in design or possibly incorporate 3rd party scenarios that were difficult to plan for on paper. The following is an overview of the tools we use in the field to facilitate the load testing of Exchange hardware and disk subsystems. These should be utilized during any new deployment of Exchange to ensure the highest quality delivery of the messaging applications and services.
Exchange Server Jetstress 2010
The Jetstress tool is designed to simulate Exchange I/O at the database level by interacting directly with the database technology of the Extensible Storage Engine (ESE), also known as Jet, that Exchange is built on. Jetstress can be configured to test the maximum I/O throughput available to your disk subsystem within the required performance constraints of Exchange, or it can accept a desired profile of user count and I/Os per second per user and validate that the disk subsystem is capable of maintaining an acceptable level of performance with such a profile. Jetstress testing can be used to validate storage reliability and performance prior to the deployment of Exchange servers. You should run Jetstress if you are concerned about your storage subsystem performance or if you need to determine a system's I/O capacity.
The documentation for Jetstress describes how to configure and execute an I/O validation or evaluation on your server hardware. You can download Jetstress from Microsoft Exchange Server Jetstress 2010 (64 bit).
For more information, see Microsoft Exchange Server Jetstress 2010.
Exchange Server Load Generator 2010
The Load Generator (LoadGen) tool is designed to produce a simulated client workload against a test Exchange deployment. This workload can be used to evaluate how Exchange performs, and can also be used to analyze the effect of various configuration changes on Exchange behavior and performance while the system is under load. The documentation for LoadGen describes how to configure and execute a load test against an Exchange server. LoadGen is capable of simulating Microsoft Office Outlook 2003 (online and cached), Outlook 2007 (online and cached), POP3, IMAP4, SMTP, ActiveSync, and Outlook Web App client activity. It can be used to generate a single-protocol workload, or these client protocols can be combined in some form to generate a multi-protocol workload.
Use the output from these tests in the following ways:
- Validate deployments
- Calculate the client computer response time for the server configuration under client load
- Estimate the number of users per server
- Identify bottlenecks on the server
When to Use Performance and Scalability Tools
Jetstress and LoadGen are typically used as part of the pre-deployment process, either to provide data for hardware sizing requirements prior to hardware purchasing, or to analyze the stability and performance of a system prior to placing it into production.
Whenever possible, you should run a Jetstress test prior to placing a mailbox server into production. Jetstress testing is straightforward and can be accomplished with little additional work beyond the hardware setup and operating system configuration that would already be necessary prior to the installation of Exchange.
LoadGen testing is much more involved and should be considered and planned carefully. Set a realistic goal for the information to be obtained as a result of the test, and always remember that LoadGen doesn't provide a 100 percent accurate simulation of all client activity. Therefore, any measurements generated by Loadgen testing should be used as a part of your decision-making process and should not be the only data points used to make a final decision for server sizing or configuration changes.
Test tools like LoadGen are not designed to be run in a production environment and should never be run against a live production system or in an environment that has any connection to a live production system. Additionally, you should use extreme caution when running LoadGen against a test environment that contains copies of actual data, as it may be possible for LoadGen to act on messages in your test environment in such a way that outgoing mail leaves your test environment and ends up in a production mailbox (depending on the message routing configuration of your test environment).
Evaluating Test Results
Both Jetstress and LoadGen produce a test report at the conclusion of any test activity. The test report contains a high-level pass/fail metric that you can use to determine if the other reported values will be usable for server sizing or pre-deployment validation. Both tools also provide various performance metrics. In addition to the values provided in the test reports, you should read the tool documentation for additional suggestions about server performance counters that should be monitored during the test to evaluate system health and performance.