With Exchange Server 2003, the store process was bound to a certain memory cache limit. The upper bounds of this limit were typically set at around 900MB. With Exchange Server 2007 which uses 64-bit architecture, the limit on database cache size is no longer present. Currently, the default minimum cache size for Exchange 2007 is 512MB (for machines with at least 2GB RAM), and there is no maximum value set, which means that ESE (store.exe) will grow the cache to consume almost all available RAM on the server if there is no other memory pressure on the system. A larger database cache size typically results in greatly reduced disk I/O as reading information from memory is much faster than reading information from disk. If memory pressure occurs, that is other applications request/require memory, ESE will appropriately shrink the size of the database cache automatically.
You can set a limit on the ESE database memory cache. This is done by following the below steps:
- Start ADSI Edit by clicking Start > Run and typing ADSIEDIT.MSC
- Open the following object: Configuration > Services > Microsoft Exchange > Exchange organization > AdministrativeGroups > Your administrative group > Servers > Server name > Information Store
- Right-click the Information Store, and then click Properties.
- Under the list of Attributes, scroll down and select msExchESEParamCacheSizeMax.
- Click the Edit button, then type the number of 8 kilobyte (KB) pages that you want to set the maximum cache size to.
For example, 1GB cache equates to 1048576 (1024 * 1024). Divide the cache that you want to set by 8kb to determine the value to enter. In this case, 1048576 divided by 8 is 131072. If you wanted to set the cache size to 16GB, the value would be 2097152 (16777216 divided by 8).
The msExchESEParamCacheSizeMax parameter controls the ESE buffer size. Its value is expressed as a page count, and must be set to an exact multiple of 8192 for maximum efficiency. If this value is not met, the cache size is rounded up to the next 32-MB boundary when virtual memory is allocated. If this value is incorrectly set, memory may be wasted.
For more details read the following article: http://www.msexchange.org/pages/newsletters/july2007.asp