News Stay informed about the latest enterprise technology news and product updates.

Extensible Storage Engine Heaps

The following is tip #4 from "25 Exchange 2003 tips in 25 minutes"

The following is Tip #4 from "25 Exchange 2003 Tips in 25 minutes." This content is excerpted from Scott Schnoll's book, "Microsoft Exchange Server 2003 Distilled," brought to you by © (2004) Pearson Education, Inc. Publishing as Addison-Wesley Professional. Return to the main page for more tips on this topic.

Like other operating systems, Windows includes a process-wide heap manager that handles memory operations for all processes. Each time a process instantiates, a default heap (called the process heap) is created for that process. Programs or modules loaded in that process can also create additional heaps if needed. Exchange is one program that does this.

In Exchange 2000, each time the Exchange information store was started, the STORE.EXE process got its initial process heap. Then, a module loaded in the information store process -- ESE.DLL -- allocated four JET heaps for each processor present in the system. Although these heaps were separate pools of memory in the information store process, they were collectively referred to as the ESE multiheap. On a single CPU system, ESE allocated four JET heaps. On a dual CPU system, it allocated eight; on a quad system, it allocated sixteen; and so forth. When Exchange 2000 was installed on systems with four or more CPUs, it was found that the ESE multiheap caused excessive virtual memory consumption, which in turn led to performance problems. Ironically, the problem was worse on systems with a large amount of resources installed (multiple CPUs and multiple gigabytes of memory).

To correct this problem, Microsoft recommended that customers with large Exchange 2000 servers add the following registry entry to their systems.

Location: HKLM\Software\Microsoft\ESE98\Global\OS\Memory
Value: MPHeap parallelism
Type: REG_SZ

The value data setting depended on the number of CPUs present in the system, and if you added or removed CPUs to the system in scale-up or scale-down procedures, you had to manually readjust this setting. Exchange 2003 now automatically calculates the optimum number of heaps to allocate based on the unique specifications of each system. Therefore, you should remove the MPHeap parallelism registry entry from Exchange 2000 servers prior to upgrading to Exchange 2003.

Get more "25 Exchange 2003 Tips in 25 minutes." Return to the main page.

About the author: Scott Schnoll, an Expert on, is an MCT, MCSA and a long-time Microsoft Most Valuable Professional (MVP).

In addition to writing "Microsoft Exchange Server 2003 Distilled," he is a co-author of the upcoming "Exchange 2003 Resource Kit from Microsoft Press" and lead author for "Exchange 2000 Server: The Complete Reference."

Scott has written numerous articles for Exchange & Outlook Magazine, and is a regular speaker at Microsoft conferences, including MEC and TechEd, as well as industry conferences such as Comdex and MCP TechMentor, where he covers topics such as Exchange, clustering, Internet Information Services and security.

Dig Deeper on Legacy Exchange Server versions

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.