A small and interesting info on Memory Utilization by Information Store in Exchange 2007 & Exchange 2010

A small and interesting info on Memory Utilization by Information Store in E12 & E14.

The Information Store’s default minimum database cache size for E12 is 512MB (for machines with at least 2GB RAM) and there is no default maximum cache size, meaning
ESE will grow the cache to consume almost all the RAM on the machine if there is no other memory pressure on the system. If memory pressure occurs (such as say due
to new applications starting) ESE will appropriately shrink the size of the database cache.

Understanding Exchange Server 2007 I/O improvements from 64 bit

Going 64-bit with Microsoft Exchange Server 2007

Processor and memory configurations for Exchange Server 2007 Server Roles

Exchange 2007 Processor and Memory Recommendations

“A 64-bit Windows Server running the 64-bit version of Exchange 2007 substantially increases the virtual address space, and allows Exchange to increase its database
cache, reduce database read I/O, and enable up to 50 databases per server.”

Also as a rule of thumb, we recommend the following page file size
RAM 8GB, MIN=RAM+10MB, only go to 1.5x if VM problems continue.

Summary:
=========
Exchange 2007 removed the limitation on the ESE database memory cache. As a result, the memory utilization of the store.exe process can be much greater than
with Exchange 2003.

More Information:
==============
With Exchange 2003, the store process was bound to a certain memory cache limit. The upper bounds of this limit was typically set at around 900mb. This could be
increased further to aid in recovery, but for normal day-to-day operations, the limit was right around 900mb. This was due to the virtual memory limitations with
a 32-bit Operating System, which limited virtual address space to 4GB. The default settings allocated 2gb virtual address space for kernel mode, or the Operating
System, and the other 2gb for application mode, which was used by applications such as Exchange. The /3GB switch could be added to the boot.ini file to change this
default allocation to 1gb for kernel mode, and 3gb for application mode.

indicates how the maximum database cache size could be modified with Exchange 2003, and shows what the recommended values
are. The default value for a server with the /3GB switch set is 896mb, and the maximum recommended value is 1.2gb.

With Exchange 2007 and the 64-bit architecture, this limit on database cache size is no longer present, so the store process is no longer bound to that 900mb limit.
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. This much larger database
cache size results in greatly reduced disk I/O, and is preferred anyways, as reading information from memory is much much faster than reading information from
disk. If memory pressure occurs, as when other applications request/require memory, ESE will appropriately shrink the size of the database cache.

For example, if the server contains 16gb physical memory, if there is no other memory pressure, one could expect that the store.exe process will grow to use up to
14gb memory (16gb minus 2gb allocated to Kernel mode).

This value can be manually adjusted by modifying the following attribute on the properties of the Information Store object, however it is not recommended to do
so.
msExchESEParamCacheSizeMax

How to modify the default database cache size:

To modify msExchESEParamCacheSizeMax:

1. Start ADSI Edit.
2. Open the following object:
Configuration/Services/Microsoft Exchange/Your organization/Administrative
Groups/Your administrative group/Servers/Server name/Information Store
3. Right-click Information Store, and then click Properties.
4. Under the list of Attributes, scroll down and select msExchESEParamCacheSizeMax.

5. 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).

Note 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.

6. Quit ADSI Edit, and then restart the Microsoft Exchange Information Store
service.

Note : Its recommended to do this settings only after testing in a lab environment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: