Monday, October 8, 2012

Windows 2008 R2 Cluster Tuning for FileServers (Part Two)

 
In Part Two I want to talk about cache. First of all some background reading. This is an excellent article on dynamic cache allocation on Windows servers:
 
http://blogs.msdn.com/b/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx
 
And here is an excellent article around what can happen when the operating system allows the cache to be too dominant:
 
http://blogs.msdn.com/b/ntdebugging/archive/2007/11/27/too-much-cache.aspx
 
I, for one, have come across this issue on our HOME DRIVE fileserver (the one mentioned in Part One). Here is a PERFMON output:

Memory Usage


Memory                       Minimum      Maximum      Average
=========================================================================
Available Bytes             :    4,816MB |    7,736MB |    6,715MB
Pool Paged Bytes            :      990MB |    1,077MB |    1,035MB
Pool NonPaged Bytes         :      502MB |      513MB |      505MB
Free System PTEs            : 33,555,641 | 33,556,169 | 33,555,664
Handle Count                :     85,871 |     88,721 |     87,017
Thread Count                :      1,149 |      1,256 |      1,197
Private Bytes               :    1,045MB |    1,338MB |    1,156MB
Virtual Bytes               :    6,923MB |    8,649MB |    7,571MB
Working Set                 :    1,165MB |    1,449MB |    1,279MB
Cache Bytes                 :    5,722MB |    8,684MB |    6,800MB
Committed Bytes             :    3,110MB |    3,394MB |    3,235MB
Commit Limit                :   21,276MB |   21,276MB |   21,276MB
% Committed Bytes Used      :        15% |        16% |        15%
Pages/sec                   :     25.162 |  3,921.154 |    811.628

This is waaay high. Microsoft have confirmed this is an issue in Windows 2008 R2. In order to bring this back down to earth you are going to need to install the 'Microsoft Windows Dynamic Cache Service'. Firstly you need to talk to your Premier Support team and obtain a copy of DYNCACHE.EXE. This is the executable that sits at the heart of the new service. Once you have that, throw it into:
 
C:\Windows\System32 (or wherever your System32 folder is).
 
Next, we need to create the service using the service configuration command. Here is the syntax:
 
sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service"
 
 You can copy-n-paste that straight into an elevated CMD window.
 
Next you need to provide the registry keys that it will read. Here is my version:
 
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DynCache]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DynCache\Parameters]
"MaxSystemCacheMBytes"=dword:00000800
"MinSystemCacheMBytes"=dword:00000064
"SampleIntervalSecs"=dword:0000003c
"CacheUpdateThresholdMBytes"=dword:00000064

 
As you can see, I have highlighted the maximum size that I want my cache to be. You need to arrive at that figure yourself or in discussion with your Microsoft PFE, but just to help you out with the HEX values a little:

400 = 1GB
800 = 2GB
1200 = 3GB
1600 = 4GB

Once you have all this in place. Reboot.

Cheers!

No comments:

Post a Comment