Why Exchange 5.5 Performance Optimizer on Windows 2000 SP4 doesn't always work

Ok, first I guess I should give some history about the utility known as Performance Optimizer (Perfwiz).  Years ago, when Exchange 5.5 was first released, Microsoft didn't have a whole lot of customers with really large Information Store (IS) databases that took up a lot of store memory.  So, when you ran Perfwiz we gave both the directory and the IS as much RAM as they wanted to take. 

But, as our customer base grew and larger companies started switching off of MSMail and over to Exchange 5.5 our customers' IS databases grew larger as well.  Along with that customers started adding more and more RAM to their boxes.  As more RAM was added, customers started adding the /3GB switch to their boot.ini.  That was when all kinds of weird problems started happening.  I mean cats and dogs living together weird.  It turned out that when we had more than 800 MB of RAM we were giving too much RAM to the IS and that started spitting out errors like the following:

Event ID: 1160
Source: MSExchangeIS
Type: Error
Description: Database resource failure error Out of memory occurred in function "JTAB_BASE::EcCreateIndex" while accessing the database.

You can look at the following KB for more information about this issue:
195006 XADM: Resource Failure Error on Computers with More Than 800 MB of RAM
https://support.microsoft.com/?id=195006

So, we started preaching the importance of running Perfwiz every time you added more memory, changed the boot.ini to include the /3GB switch, or you installed Service Packs.  The fix to Perfwiz was in SP3, so that should have covered it.

Or so I thought...

Recently we have seen a number of cases where customers are moving their mailboxes from NT4 boxes running Exchange 5.5 to Windows 2000 machines running Exchange 5.5.  (Some larger companies just take longer to migrate...)  Then they start seeing the Event ID 1160's again.  They call me up and swear that they have run Perfwiz, so I ask them to send me the perfopt.log so that I can verify it.

In the perfopt.log you will find a line that says:

Set # of Information Store Buffers from 1000 to XXXX (Some number)

In cases where you have the /3GB switch then the maximum number you should see here is 325,000.  Without the /3GB switch the maximum should be 208,896.  However, some customers who swear that they ran Perfwiz are still not seeing that change.  Instead the number is 524,136.  That's WAY too high...

So as a best practice I always recommend that the customer stop all exchange services and run Perfwiz.  Aha!  It works!  Then the customer swears again that they ran Perfwiz when they set the server up, but perhaps they were just tired and forgot to install SP3 first....  <Click>  Another satisfied customer.

But then I found out that we have an issue with running Perfwiz on Windows 2000 with SP4.  See the following:
821543 XADM: "Services List of Dependent Services Could Not Be Enumerated.
https://support.microsoft.com/?id=821543

Oh...  I guess it is our fault.  Sorry about that.