David Overton's Blog and Discussion Site
This site is my way to share my views and general business and IT information with you about Microsoft, IT solutions for ISVs, technologists and businesses, large and small.  

the BCM dirty little secret or Getting a "Handle" on improving BCM performance

rated by 0 users
This post has 1 Reply | 1 Follower

Top 75 Contributor
Points 10
messino Posted: Fri, Jul 4 2008 4:37 PM

All of us loyal users of Outlook know of its history of being bloated and slow.  When you add BCM 2007 to OL 2007 you get a "handle count" which exceeds the Windows XP capability.  I performed this test on 5 separate computers all running Windows XP, OL 2007 and BCM 2007.and in each case I found the Handle Count after initialization to grow on average to 14.500 (with an exchange mailbox).  So what is the big deal? The windows xp O/S was only configured for 10,000 Handles per application.  OL2007 alone is in the 4,000-7,000 range.  What is the effect? Your system degrades and BCM can give you system memory errors and lock you out of certain folders.

The Fix is there are instructions elsewhere on the web to increase the Handles up to 18,000, by making mods in RegEdit.  Also, remove all add-ins which are not absolutely required.  Keep PST files to a bare minimum and avoid IMAP PST.  If necessary create a separate Outlook Profile for BCM, which has a minimalist approach.  Also, remember Add-ins apply to all profiles.

How did I discover this.  I have a 4 cpu Dell Workstation which was barely running when BCM started.  As it turns out I had a system of 99,000 Handles and 86,000 Belonged to OL2007 and BCM 2007.  I reinstalled OL2007 and BCM2007 with the assistance of MS Support and gradually stripped OL to the bare bones and then recreated the results on other Desktops and Laptops to check for consistency.   

  • Filed under:
  • | Post Points: 5
Top 75 Contributor
Points 10
messino replied on Fri, Jul 4 2008 4:48 PM

 

Recommendations noted on the Web for increasing Handles: 

To back up everything, open the Windows Registry Editor:

Click on the Start button.
On the Start menu, click on "Run..."
In the Run dialog, type "regedit.exe" (without the quotes) and then press Enter or click OK.


Now, to backup a registry key:

In the Registry Editor on the left hand side, you will see the navigation pane. Using your mouse or keyboard, navigate to the following subkeys:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contro l\Session Manager\SubSystems

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows

Right click on each of the subkeys above in the left hand pane and from the context menu that appears, choose the "Export" option. Save the exported registry data files where ever you wish, but make sure that they will be accessible should we need to restore them in the future.

Now that you have backed up the registry keys that we will be modifying, we can begin making modifications to the values in order to increase the handle limits in Windows.

With the Registry Editor opened, navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contro l\Session Manager\SubSystems.

You will notice a set of "REG_MULTI_SZ" and "REG_EXPAND_SZ" keys in the right hand pane. The one that we are interested in modifying is called "Windows".

To modify the key, double click on it. It should look something like this:

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,3072,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

The section of this string we are interested in modifying is SharedSection.

In the SharedSection part of the string you will notice 3 numbers. What we are interested in is the middle value, "3072". Modify this value so that it reads "8192" instead.

It should look something like this after modifying the value:

%SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,8192,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off MaxRequestThreads=16

Now that this registry entry has been modified we can continue on with the other values that need to be modified in order to raise the GDI limits.

In the left hand pane of the Registry Editor, navigate to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows. In the right hand side, you will see two REG_DWORD values, named GDIProcessHandleQuota and USERProcessHandleQuota. We will need to modify both of these.

The first key we will want to modify is GDIProcessHandleQuota. This keys value can be set between 256 and 16,384 (maximum), and the default value is 10,000. I'd recommend using 15,000 as a value for this key, however if you are doing a lot of multitasking, shoot for the stars and go with 16,384.

This key cannot be set past 16,384 as it is the maximum acceptable value.

Now, let's modify USERProcessHandleQuota. This keys value can be set between 200 and 18,000 (maximum), with a default value of 10,000. I'd recommend increasing this value to the same number used with GDIProcessHandleQuota, however as previously mentioned if you are working with a hefty application workload, shoot for the stars and go with the maximum value of 18,000.

This key cannot be set past 18,000 as it is the maximum acceptable value.

Do NOT attempt to increase these values past the maximum - Windows will become very unstable and may even stop working correctly. If Windows starts acting up after changing these values, lower them until the issues are resolved, or restore the backups of these keys' values that we created before making modifications.

Now that you've changed these values, restart your computer and tax the system using the Internet Explorer trick mentioned previously - open Internet Explorer and hold down Ctrl+N on your keyboard to open up new Internet Explorer windows. Continue this until menus, buttons, and user interface elements stop working correctly. Also, open any applications you run day-to-day while you are performing this, so that you can get more of an idea if you have everything configured correctly.

You may also want to monitor your memory usage and handles information in Task Manager to see whether or not the above registry values need any more modifications.

  • | Post Points: 5
Page 1 of 1 (2 items) | RSS

(c)David Overton 2006-18