Planning Memory Configurations
Microsoft Exchange Server 2007 will reach end of support on April 11, 2017. To stay supported, you will need to upgrade. For more information, see Resources to help you upgrade your Office 2007 servers and clients.
Applies to: Exchange Server 2007, Exchange Server 2007 SP1, Exchange Server 2007 SP2, Exchange Server 2007 SP3
There are many factors to consider when selecting hardware for use by Microsoft Exchange Server 2007. Three of the most critical factors to consider are choice of processor, amount of memory, and selection of storage. This topic provides guidelines for memory configurations that provide good performance and a strong platform for Exchange Server. For detailed guidance and recommended configurations for processors, see Planning Processor Configurations. For detailed guidance and recommended storage configurations, see Planning Storage Configurations.
As a result of moving to a 64-bit architecture, Exchange 2007 enables much better memory utilization than previous versions of Exchange Server. For example, because of the virtual address space limitations of a 32-bit platform, Exchange Server 2003 is limited to using 4 gigabytes (GB) or less of physical memory. In contrast, Exchange 2007 can use 32 GB of memory and more.
Note
32 GB is not a physical limitation, but rather it is currently the most cost-efficient maximum memory configuration. Depending upon the number of memory slots in a server, the most cost-efficient maximum memory configuration might be less than 32 GB (for example, 16 GB). This needs to be considered when choosing server hardware.
When selecting hardware for Exchange 2007, we recommend that you consider the server maximum memory configuration. Different server architectures have different memory limits. We recommend that you check the following technical specifications of the server to determine the most cost-efficient maximum memory configuration for your servers:
Memory speed Some server architectures require slower memory to scale the memory to dozens of gigabytes in a specific server. For example, maximum server memory is limited to 16 GB with PC3200 or 32 GB using PC2700. You should check with the manufacturer to ensure that the memory configuration target for Exchange 2007 is compatible in terms of speed.
Memory module size Consider the largest memory module size that the server will support. Generally, the larger the memory module, the more expensive. For example, two 1 GB DDR SDRAM memory modules generally cost much less than one 2 GB DDR SDRAM memory module. Make sure the maximum memory module size allows you to meet your target memory requirements for Exchange 2007. It may make sense to spend more money and purchase denser memory modules to make sure that the memory requirements for Exchange 2007 can be met.
Total number of memory slots Consider how many memory modules that a specific server will support. The total number of slots multiplied by the maximum memory module size provides the maximum memory configuration for the server. Keep in mind that memory modules must sometimes be installed in pairs.
One caveat with this planning method is that some servers experience a performance improvement when more memory slots are filled, while others experience a reduction in performance. Check with your hardware vendor to understand this effect on your server architecture.
Recommended Memory Configurations
After the number of processor cores estimated to be required per server role is understood, baseline memory recommendations can be applied. The following table illustrates the minimum, recommended, and maximum memory configurations for Exchange 2007 server roles.
Memory configurations for Exchange 2007 servers based on installed server roles
Exchange 2007 server role | Minimum per server | Recommended | Maximum per server |
---|---|---|---|
Edge Transport |
2 GB |
1 GB per core (2 GB minimum) |
16 GB |
Hub Transport |
2 GB |
1 GB per core (2 GB minimum) |
16 GB |
Client Access |
2 GB |
2 GB per core (2 GB minimum) |
16 GB |
Unified Messaging |
2 GB |
1 GB per core (2 GB minimum) |
4 GB |
Mailbox |
2 GB; also depends on number of storage groups (For information, see later in this topic.) |
2 GB plus from 2 megabytes (MB) to 5 MB per mailbox. This is variable based on user profile. For more details, see "Mailbox Server Role" later in this topic. |
32 GB |
Multiple roles (combinations of Hub Transport, Client Access, Unified Messaging, and Mailbox server roles) |
4 GB; also depends on number of storage groups (For information, see later in this topic.) |
8 GB plus from 2 MB to 5 MB per mailbox. This is variable based on user profile. For more details, see "Mailbox Server Role" later in this topic. |
32 GB |
Edge Transport and Hub Transport Server Roles
The Edge Transport and Hub Transport server roles do not require substantial quantities of memory to perform well in optimal conditions. Generally, 1 GB of RAM per processor core (2 GB minimum total) is sufficient to handle all but the most demanding loads. The recommended maximum memory configuration of 16 GB is based on the Edge Transport and Hub Transport servers handling one million messages with an average number of recipients each. Most deployments will be optimally configured with the recommended memory configuration of 1 GB per processor core (2 GB minimum total).
Two significant memory factors that should be taken into account for large deployments are large queue scenarios, and EdgeSync memory requirements.
Large Queue Scenarios
Exchange 2007 Edge Transport and Hub Transport servers are designed to handle scenarios where extremely large queues build up (for example, 1 million messages in a single server queue). These servers hold the queued message recipient information in memory to optimize sending and retry operations. Use the following table when sizing Edge Transport or Hub Transport servers for large queue scenarios.
Memory overhead for large queue scenarios
Memory factors per queued message | Memory consumed |
---|---|
Per message overhead |
3 kilobytes (KB) |
Per recipient overhead |
1 KB |
EdgeSync Memory Requirements
EdgeSync is a process that synchronizes directory information between Edge Transport servers and Hub Transport servers that are in the same Active Directory directory service site. All Hub Transport servers keep EdgeSync directory information in memory to facilitate pushing this information to the Edge Transport servers. The amount of memory used is determined by the number of mail-enabled objects in the directory (for example, recipients and distribution lists). Each mail-enabled object causes approximately 4 KB of memory to be consumed by the EdgeSync process.
The recommended memory configuration for Hub Transport servers is targeted at non-enterprise deployments. Organizations with tens of thousands of mail-enabled objects should understand the EdgeSync memory overhead and size their Hub Transport servers appropriately.
Client Access Server Role
In general, memory utilization on Client Access servers has a linear relationship with the number of client connections and the transaction rate. Based on the current recommendations for processor and memory configurations, a Client Access server will be balanced in terms of memory and processor utilization, and it will become processor bound at approximately the same time it becomes memory bound.
Mailbox Server Role
The memory configuration process for the Mailbox server role is more complex than the other roles because the optimal memory configuration depends upon the mailbox count and the client profile (similar to estimating processor core requirements). Memory sizing for the Mailbox server role is critical to reducing disk input/output (I/O) on the server. The more memory you add to the Mailbox server, the less disk I/O that will be generated by Exchange. There is, however, a point of diminishing returns at which adding memory to the server may not be justifiable based on price and performance. The memory recommendations outlined in this section consider this point of diminishing returns, and are based on current memory prices and performance metrics.
Defining the memory configuration of a Mailbox server is required prior to defining the storage requirements and configuration for that server. You can use the following table to estimate the memory requirements of a specific Mailbox server with a specific number of hosted mailboxes and with a specific profile type.
Mailbox server memory recommendations
User type | Mailbox server memory recommendation |
---|---|
Light |
2 GB plus 2 MB per mailbox |
Average |
2 GB plus 3.5 MB per mailbox |
Heavy |
2 GB plus 5 MB per mailbox |
Very heavy |
2 GB plus 5 MB per mailbox |
Extra heavy |
2 GB plus 5 MB per mailbox |
Recommended Maximum Memory Configuration for Mailbox Servers
Recent x64-based servers have the ability to scale their memory configuration to 64 GB and beyond. There are several reasons why we do not recommend maximum memory configurations beyond 32 GB for Mailbox servers, including cost, the impact of non-transactional disk I/O, and cold state operations:
Cost Based on current memory prices, specifically the current average price of 4-GB dual in-line memory modules (DIMMs), it is cost prohibitive to install more than 32 GB on a single Mailbox server. Generally, the cost of physical RAM is linear up to 32 GB. Beyond 32 GB, the cost trend is exponential, and for many configurations, it is less expensive to add disk drives instead of memory.
Non-transactional disk I/O The Mailbox server utilizes additional physical RAM by caching more data, which reduces the database disk I/O footprint for transactional disk I/O (I/O that is generated by client activity). There are several sources of non-transactional disk I/O on the Mailbox server. These include online maintenance (for example, online database defragmentation); offline maintenance (for example, offline database defragmentation or database repair operations); backup, restore, or recovery operations; and mailbox management operations. All of these operations require disk I/O to properly maintain the server. Although Exchange 2007 has reduced transactional I/O significantly, adequate storage performance is still required for proper maintenance of the Mailbox server. For this reason, there is a point of diminishing returns when adding memory to the server. In general, the purpose of adding memory to the Mailbox server is to reduce the disk I/O requirements, which in turn reduces the overall cost of the storage solution. Due to non-transactional I/O requirements, the storage requirements of the server may not be significantly reduced by adding more than 32 GB of memory.
Cold state operation Cold state is defined as the state of the Mailbox server immediately following a server restart or a restart of the Microsoft Exchange Information Store service. The database cache, which is used to cache read/write operations, is small in size (cold) during this period, so it has a significantly diminished ability to reduce read I/O operations. As the Mailbox server processes messages, the database cache size grows, increasing the effectiveness of the cache and subsequently reducing disk I/O on the server. The more physical memory in the server, the longer it takes the database cache to reach its optimal size. If the storage solution is designed and sized for a server with a large amount of physical RAM (greater than 32 GB), and the disk I/O profile of the users assumes an optimal database cache state (for example, a large, warm cache), the client experience may be compromised due to insufficient disk performance during the cold state periods. Similar to the issue of non-transactional I/O, the storage requirements may be the same for a server with 32 GB of memory as a server with more than 32 GB of RAM. On a properly configured Mailbox server, it should take about 15 minutes to reach the optimal cache state after a cold operation has occurred.
Although the Mailbox server role will utilize memory greater than 32 GB, for the reasons outlined earlier, 32 GB is the maximum recommended memory configuration and is considered the point of diminishing returns in terms of both cost and performance.
Minimum Memory Required for Mailbox Servers Based on Number of Storage Groups
In Exchange 2007, the maximum number of storage groups per server has been increased to 50 (up from 4 in Exchange Server 2003). This increase provides much greater flexibility in server and storage architecture, but this increase also has a significant effect on the memory utilization of the Mailbox server. Increasing the number of storage groups primarily affects the utilization of the database cache. The database cache is used for both reads and writes. Due to the way checkpointing works, adding a storage group increases the amount of the database cache used for write activity. This has a positive impact of reducing database write I/O, but if too many storage groups are configured on a server with insufficient physical memory, the effectiveness of the database read cache may be reduced. This can have an overall negative effect on the performance of the server. For this reason, it is important to maintain a ratio between the number of storage groups and the amount of physical memory in the server.
In Exchange 2007 Service Pack 1 (SP1), several performance enhancements were made to the Extensible Storage Engine (ESE) that reduce the memory requirements for the Mailbox server role. The following table identifies the specific minimum memory requirements per server, based on the number of storage groups on the server for Exchange 2007 and Exchange 2007 SP1.
Minimum memory required based on number of storage groups
Storage group count | Exchange 2007 minimum required physical memory | Exchange 2007 Service Pack 1 minimum required physical memory |
---|---|---|
1-4 |
2GB |
2GB |
5-8 |
4GB |
4GB |
9-12 |
6GB |
5GB |
13-16 |
8GB |
6GB |
17-20 |
10GB |
7GB |
21-24 |
12GB |
8GB |
25-28 |
14GB |
9GB |
29-32 |
16GB |
10GB |
33-36 |
18GB |
11GB |
37-40 |
20GB |
12GB |
41-44 |
22GB |
13GB |
45-48 |
24GB |
14GB |
49-50 |
26GB |
15GB |
The preceding table augments the basic 2-GB minimum memory requirements for Exchange 2007. Mailbox and multiple role server configurations must meet the requirements listed in the preceding table to receive support from Microsoft.
The minimum physical memory requirements based on storage groups listed in the preceding table closely match our recommendations on memory sizing based on mailbox count and profile. To understand how these memory recommendations should be used, consider the following examples:
Example 1 A 4,000-user Mailbox server with a heavy user profile would require 22 GB of RAM (2,048 MB + (4,000 × 5 MB)). Based on the preceding support requirements, the server could support up to 44 storage groups. Additional RAM would be required to support more than 44 storage groups.
Example 2 A 1,000-user Mailbox server with a light user profile would require 4 GB of RAM (2,048 MB + (1000 × 2 MB)). Based on the preceding support requirements, the server could support up to 8 storage groups. Additional RAM would be required to support more than 8 storage groups.
Memory Recommendations for Local Continuous Replication
In a local continuous replication (LCR) environment, both the active copy and passive copy of an LCR-enabled storage group are on the same server. The Microsoft Exchange Replication service will work well on a server that has LCR enabled for one or more storage groups based on the provided memory guidance. However, to ensure that the ESE database cache maintains optimal efficiency in an LCR environment, we recommend that you install an additional 1 GB of RAM to Mailbox and multiple role servers (beyond the memory guidance listed earlier).
Multiple Server Roles
Guidance and limitations similar to the Mailbox server role apply to multiple server role configurations. To accommodate the Client Access and Hub Transport server roles on the same server as the Mailbox server role, the recommended base memory configuration is 8 GB. Memory guidance based on mailbox count and profile is the same as the Mailbox server role. The recommended maximum amount of memory is 32 GB.
Neither cluster continuous replication (CCR) nor single copy cluster (SCC) supports hosting the Hub Transport or Client Access server roles in a failover cluster. A multiple role server is non-clustered by definition. It is a good idea to cluster Mailbox servers that host thousands of mailboxes to ensure that server maintenance or failures do not have a significant impact on uptime or availability.
The minimum memory requirements based on the number of storage groups listed in the preceding table apply to multiple role server configurations, including configurations that contain the Mailbox server role.