How to Calculate Storage I/O Requirements Using Environmental Data
If you already deployed Exchange, you should use your existing production environment to identify your I/O requirements. A benefit of monitoring your production environment is that your data includes all I/O that occurs across all applications, including third-party applications.
When you calculate IOPS per mailbox, use the current number of mailboxes on that server. If the server contains many unused mailboxes or is running other applications that do not add much load during the peak two hours, your results may not represent a typical user load. You should select a server that has typical user mailboxes for your measurements, or does not include the unused mailboxes in your calculation.
Before You Begin
Be aware that different days of the week have slightly different usage loads. Because this varies widely, you should monitor your environment over an extended period of time (ideally one month) to determine when you are likely to experience peaks.
To calculate storage I/O requirements using environmental data
Identify three Exchange mailbox servers to use for your baseline performance gathering. These should be high-end servers that service your most aggressive e-mail users. For this procedure, these servers will be referred to as ex2003base. Often different sites have different types of users. Sometimes it is useful to get mailbox profile data for each site and have different standard mailbox profiles—one for each site.
Monitor the ex2003base servers for a 24 hour period on the day that usually experiences peak load (Monday for many companies). On that peak load day, start the Perfmon log on each server at 4:00 A.M and let it run for 24 hours.
Log the following Perfmon objects (all counters, all instances) at 15 second intervals:
Compile the following data from the ex2003base servers:
- Determine the average mailbox size of the three ex2003base servers. To help determine future storage performance needs, you will use the average mailbox size.
A mailbox size limit is required to adequately size the storage size/performance for a given user base.
Determine how many mailboxes are on each ex2003base server. This will allow you to determine accurate I/O per mailbox averages for each server later in this process.
Determine which of your ex2003base server volumes are used for each Exchange function, such as transaction logs, databases, and MTA queues.
Individually analyze each of the three Perfmon logs collected in Step 3. For each log, perform the following steps.
In Perfmon, open the Perfmon log.
Add the following counters:
Logical Disk->Disk Transfers/sec->Instance=Drive letter that houses the Exchange Store database. (Add all drive letters that contain Exchange Database files).
Set the scale so that all counters fall within the 0-100 x axis (so 1 minute variations of all counters can be viewed). Display the Graph View.
Analyze the Perfmon data and identify a one hour period in which all three counters are highest (RPC Operations/sec, Disk Transfers/sec and Processor utilization). You should see a plateau where utilization is high for extended periods.
After you determine this one hour window, reduce the Timeline of the Perfmon log to match this window.
From this one hour window, record the following metrics (Average) for each of the ex2003base servers:
% Processor Time:
Use this data to populate the Server_Sizing.xls spreadsheet that is included with the download of Optimizing Storage for Exchange Server 2003.
Identify the ex2003base server that experienced the highest load. Use the data collected from the server with the highest load as your server/processor/storage baseline. Use the following best practices:
Always design your system to allow 20 percent more utilization than you expect for peaks. This allows the storage and processors to handle spikes during peak periods.
Megacycles per mailbox and IOPS per mailbox change as the server configuration changes. The following list includes potential factors that can change the given megacycles per mailbox and IOPS per mailbox.
Mailbox sizes are changed significantly
Max message size is changed significantly
Third party applications are added or removed
Exchange features are added or removed.
Average concurrency of the users changes (more or less users are online using the system at any given time).
After the spreadsheet (included with the download of the guide Optimizing Storage for Exchange Server 2003) is populated and your mailbox profiles are determined, you can design your storage solution. For example, if your analysis indicates that your standard mailbox profile translates to .75 IOPS per mailbox and 1.25 megacycles per mailbox, you can determine the following requirements for a 4,000 mailbox server:
Mailbox Count: 4,000
Peak DB IOPS: (4,000 × .75) = 3,000
Peak Log IOPS: (DB IOPS/10) = 300
Peak megacycles: (4,000 × 1.25) = 5,000 megacycles
To handle spikes, you should add a 20 percent buffer to your processor and storage design. With the addition of this buffer, the minimum hardware requirements for this example are:
Mailbox count: 4,000
Peak DB IOPS: (3,000 + 20%) = 3,600
Peak Log IOPS: (300 + 20%) = 360
Peak Megacycles: (5,000 + 20%) = 6,000 megacycles
To support these requirements, your minimum hardware for each mailbox server should be dual 3,000 mhz processors, 4 GB RAM, and storage capable of accommodating 3,600 random DB IOPS, and 360 sequential transaction log write IOPS.
Memory and network requirements are not included in this calculation. For Enterprise applications, it is recommended that Exchange mailbox servers be configured with 4 GB of memory. It is also recommended that Exchange mailbox servers be configured with 100 mbt Full Duplex networks or greater.
For More Information
For more information about calculating IOPS for each type of RAID solution, see Disk Subsystem Performance Analysis for Windows.