Thanks to all of you who took the time to answer my informal survey last week—the results were very interesting and included some excellent suggestions on how we might improve the reading experience for the UPDATE newsletters. We're carefully studying the feedback, and I hope to see some improvements in access to the UPDATE soon. Now, on with this week's topic: figuring out for yourself how scalable Exchange Server is.
Back in the ancient days of Exchange, some bright folks at Microsoft came up with the idea of building a tool to artificially simulate client load on an Exchange server. Thus was born Microsoft Exchange Load Simulator (LoadSim), which can be used to simulate the work done by users running Outlook. LoadSim has its idiosyncrasies, but it's a useful tool for measuring the performance of a given hardware configuration to see how many concurrent users it can support.
LoadSim was last updated for Exchange Server 2003 and Microsoft Office Outlook 2003, and it was joined by two other tools: Microsoft Exchange Server Jetstress Tool for doing performance loading of the storage subsystem; and the Exchange Server Stress and Performance (ESP) 2003 tool for simulating Internet protocol workloads, including OWA, SMTP, and IMAP. With the advent of Exchange Server 2007, Microsoft decided to take the opportunity to rebuild LoadSim from the ground up. The programmers' primary goal was to build a more accurate load generator that would more faithfully replicate the way Outlook 2007 and Outlook 2003 perform Messaging API (MAPI) operations. In addition, the new tool needed to provide better reporting and a larger set of adjustable parameters so that testers could have more granular control over their test setup and behavior. The result of these efforts, the Exchange Load Generator (LoadGen), was released for download last week.
LoadGen is designed to closely mimic the behavior of Outlook clients running on Exchange 2007 servers. It shares some operating similarities with LoadSim. For example, you can specify two timing parameters: how long to run the test and how long a simulated workday is. The workday interval controls how often client tasks are dispatched. There are tons of other adjustable parameters: You can control what percentage of messages should trigger common actions such as replies, deletions, or moves; you can specify how deeply folders should be nested; how many messages should be kept in mailboxes; and much more.
However, there are some significant differences in LoadGen. My favorite new feature is stress mode. As you might expect, this feature's job is to stress the target server by dispatching tasks to it as quickly as possible, ignoring the workday length parameter. For a recent set of benchmark tests, I set up a stress run with 300 mailboxes that quickly smoked out a serious performance problem with the target system by slamming it with 300 users' worth of heavy mailbox usage. (I say "heavy" because you can configure multiple profiles with different levels of activity.) LoadGen is much more efficient at generating load than LoadSim is; a single dual-processor server can easily simulate several thousand users (but if you set the concurrency percentage too high you won't get the full benefit). You can use a single LoadGen instance to control load generation on multiple machines at the same time.
The new LoadGen tool comes, interestingly, in both 32- and 64-bit versions, so you can use a 32-bit server or a 64-bit server to generate load against your 64-bit Exchange hardware. If you were curious, you could also use LoadGen to test the same load against a server running Exchange 2007 in 32-bit mode on Windows Server 2003, then repeat the test on the same hardware running Exchange 2007 in 64-bit mode, just to verify Microsoft's claims of increased performance in 64-bit mode.
Along with the new LoadGen, Microsoft has released updated 32- and 64-bit versions of ESP and Jetstress; I expect to write about these tools in a future column.