Most IT administrators should be aware that Windows Server 2003 will reach its end-of-life by July 2015. Since Windows Server 2003 has run for so long now and 64-bit/x64-systems are so common nowadays, I did not expect to have to deal with paged-pool and non-paged-pool issues again, but I was wrong.
There are still many customers, who run Windows Server 2003 in production today and many will continue to do so until end-of life of Windows Server 2003 or close to that date for various reasons. While this date is still two years away, current systems should at least be checked to insure things are running properly. In my example here-in, we’ll check that we don’t have 3rd-party applications depleting paged-pool or non-paged-pool memory since many of those servers are running as 32-bit (x86) installations.
Although Windows Server 2003 is running stably, some 3rd-party applications today consume large amounts of this paged-pool or non-paged-pool memory which is very limited on x86 systems, Problems start to arise when a x86-System has the /3GB switch set in boot.ini, in order to increase available memory for the application on that server which in fact decreases the amount of available paged-pool or non-paged-pool memory.
Problems may start to arise when 3rd-party applications have not been developed for the x86 architecture or weren’t optimized for the limited paged- and non-paged-pool memory available on x86-systems.
In my case, one 3rd-party application was consuming more than 50MB of the total available paged-pool memory of ~150MB. The result was that the affected server stopped working as soon as paged-pool-memory consumption was increased only a little bit more during normal work cycles. As soon as paged-pool (or non-paged-pool) memory is depleted, only a reboot can make the server work again.
This article gives a rough overview, what the /3GB switch does: Exchange memory use and the /3GB switch.
The general architecture of those resources is described here: Pushing the Limits of Windows: Paged and Nonpaged Pool. As you can see from the tables in the latter article, an x86-System in theory should have enough paged-pool or non-paged-pool memory available, i.e. something around 650MB for Windows Server 2003.
Practical operation often shows different values: When you take a x86-system with 4GB RAM as an example, you will usually see a maximum of available paged-pool memory of around 360 MB and a maximum of non-paged-pool memory of around 260 MB. Remember, those limits depend on the used hardware, certain BIOS and software settings, and are calculated during boot time and are fixed until the server gets rebooted.