Some time ago, I blogged about on how to limit the amount of memory Exchange 2010 can allocate for database cache. After the introduction of Exchange 2010 Service Pack 1 this didn’t seem to work anymore, as many people reported.
After some investigation, it turns out you also need to set the msExchESEparamCacheSizeMin value for Exchange 2010 SP1?s cache manager to honor the minimum and maximum limits for allocating database cache memory.
To show you this, I’ll first show Exchange 2010 SP1 where I only set msExchESEparamCacheSizeMax. In this example, I’ll use a value of 1024 which corresponds to 32 MB (1024 * 32kb pages). I then turned on Performance Monitor and started monitoring the following MSExchange Database Cache\Information Storecounters:
- Database Cache Size, the current allocated database cache size;
- Database Cache Size Min, the minimum database cache size;
- Database Cache Size Max, the maximum database cache size.
After restarting the Information Store and putting on some load on the Exchange server, you will see that the allocated database cache (green line) rises above the configured maximum (blue line).
When you check the database cache minimum size (red line), you’ll see it contains a default value, which can be larger than the configured maximum. So apparently, Exchange 2010 SP1?s cache manager contains different logic compared to Exchange 2010 RTM when the (default) minimum value is larger than the configured maximum.
To get Exchange 2010 SP1 to honor the configured msExchESEparamCacheSizeMax value, we need to configure msExchESEparamCacheSizeMin as well. The location is identical, so consult the initial post on how to perform this step; where it reads msExchESEparamCacheSizeMax, use msExchESEparamCacheSizeMin as well.
When we configure a value of 256 for msExchESEparamCacheSizeMin (8 MB) we get the following result after restarting the information store:
As you can see, the reported database cache size now nicely flattens out around the 32MB line when under load. Notice that it may go over it a little bit once in a while, but that may have to do with allocating and releasing memory.
Now only one question remains: is this a fault in Exchange 2010 SP1 or expected behavior. At least, it’s different behavior when compared to earlier Exchange versions.
Note that the above information also applies to Small Business Server 2011 since SBS2011 includes Exchange 2010 SP1.