Frequently Asked Questions about Jetstress
Topic Last Modified: 2007-07-06
This topic contains answers to frequently asked questions about Jetstress.
The amount of I/O generated by a given thread has been reduced to accommodate 50 storage group configurations with Jetstress 2007 (when you configure it to use ese.dll from Exchange 2007). The thread/session count is on a per storage group basis. This was done to allow the I/O generation ability of the tool to be granular enough to accommodate a configuration of one storage group as well as 50 storage group configurations. Therefore, the same number of threads with the same number of storage groups will produce less I/O than earlier versions of Jetstress. The amount of I/O that each thread will generate can be tuned with the following XML configuration file parameter:
Manually changing this value to “0” will cause Jetstress 2007 to generate a similar amount of I/O per thread as Jetstress 2004. Increasing this value will cause each thread to execute less I/O. This can be desirable when fine-tuning high storage group count configurations.
Exchange 2003 and Exchange 2007 have very different I/O footprints so you would not expect to see similar results between the two versions (with Jetstress or production load). The primary I/O footprint changes are as follows:
Database IO Size (KB)**
Database Read:Write ratio
3:2 -> 2:1
Database IO: Log IO ratio
4:1 -> 2:1
*Where the Exchange Mailbox server is configured to match published memory sizing guidance based on mailbox count and profile. For more information, see Exchange Server 2007 Processor and Memory Recommendations.
**Smallest I/O size
The most significant change is in the Database Read:Write ratio. What this means is that with Exchange 2007, the system is doing a much greater percentage of write I/O (much of the read I/O is buffered by the larger/more efficient cache in Exchange 2007). This increase in the percentage of Database write I/O can change the performance characteristics of the storage solution. Because most storage solutions use some type of RAID, there is an additional I/O penalty associated with write I/O. With RAID1/10, that penalty is 2x and can be even more with RAID5/6 configurations. Because of this I/O penalty associated with RAID, it is not unexpected that a given storage solution will do fewer IOPS with Jetstress 2007/Exchange 2007 ese.dll than with Jetstress 2007/Exchange 2003 ese.dll; due to the larger percentage of write I/O that the system generates. For more information, see Planning Disk Storage.
Jetstress 2007 (using Exchange 2007 ese.dll) has minimum memory requirements based on storage group count. This is to ensure consistency of I/O ratio and pattern as the storage group count is changed. The memory requirement = 1024 MB +(SG Count * 256 MB). JetstressWin will limit the number of configurable storage groups based on the physical memory configuration of the server. Jetstress memory configuration is designed solely to replicate the Exchange I/O ratios and patterns (burstiness) of a production Exchange 2007 Mailbox server. Memory utilization of Jetstress is used only to ensure consistency of I/O ratios/patterns between storage group count configurations. Jetstress will not enable you to predict or test how the I/O footprint changes on an Exchange 2007 Mailbox server as the memory configuration is changed. The tool, Exchange Load Generator, is required to quantify how memory affects Exchange I/O characteristics. Download Exchange Load Generator (32-bit or 64-bit version) from Tools for Exchange Server 2007.
Automatic tuning will work effectively only when the test is configured to host 1 storage group per disk LUN (with a given set of spindles). Jetstress will frequently fail automatic tuning when multiple storage groups are configured to use the same LUNs. Suppress automatic tuning for these test configurations and use static thread counts. For information about suppressing automatic tuning, see the topic Using Thread Count.
The amount of I/O generated by a given thread has been reduced to accommodate 50 storage group configurations with Jetstress 2007 (when configured to use ese.dll from Exchange 2007). The thread/session count is on a per storage group basis. This was done to allow the I/O generation ability of the tool to be granular enough to accommodate 1-SG configurations as well as 50-SG configurations. Therefore, the same number of threads with the same number of storage groups will produce less I/O than earlier versions of Jetstress. The amount of I/O each thread will generate can be tuned with the following XML configuration file parameter:
Manually increasing this value (maximum of 9) enables you to turn down the amount of I/O generated per thread. This can be useful to fine-tune Jetstress for large storage group configurations (because thread count is on a per storage group basis).
First, do not run multiple instances of JetstressWin to achieve this goal. Instead, follow these steps:
By default, Jetstress generates an even load distribution. Jetstress can accommodate this case by customizing the XML configuration file with the “IopsBias” parameter.
The example configuration file (for example, Jetstress-Config.xml) shown assumes the following:
Each storage group has four database files on J:\ and 2 database files on K:\—every database file has the same size when they are prepared.
Each storage group has been configured to use IOPS bias numbers. Each database transaction randomly picks a database instance (also known as a storage group) based on IOPS bias. The distribution will be 73.9% of transactions on storage group 1 and 26.1% of transactions on storage group 2.
<StorageGroups> <StorageGroup IopsBias="739"> <DatabasePaths> <Path>J:\</Path> <Path>J:\</Path> <Path>J:\</Path> <Path>J:\</Path> </DatabasePaths> <LogPath>E:\</LogPath> </StorageGroup> <StorageGroup IopsBias="261"> <DatabasePaths> <Path>K:\</Path> <Path>K:\</Path> </DatabasePaths> <LogPath>F:\</LogPath> </StorageGroup> </StorageGroups>
Jetstress logs batch transactions stats at the end of a test as follows.
The following log text shows that Jetstress has run 132505 and 46791 batch transactions (74% and 26%) on storage group 1 and 2.
3/16/2007 12:39:43 PM -- JetInterop batch transaction stats: 132505, and 46791.
By following this methodology, the amount of load generated per storage group can be tuned within a given Jetstress test.