With my experience, I’ve seen numerous number of scenarios for entire server hangs which is due to high Non-Paged pool memory. One thing which stands out in any of scenarios is /3GB switch enabled in c:/boot.ini file
David wang has already blogged about how to troubleshoot high NPP usage by using PoolMon
In Windows 2003 boxes-x86, out of 2 GB Kernel mode memory(by default) NPP region memory limit is 256 MB.
In principle if NPP usage is close to 230 MB, IIS would start rejecting requests as IIS has http.sys driver. This driver has requirement of 20 MB of FREE NPP memory otherwise requests would fail with "Page cannot be displayed" and “Connections_refused” in httperr logs
Few of the workarounds (Temporary fix)
- Set the EnableAggressiveMemoryUsage=1 . To drop the threshold from 20 MB to 8-12 MB of FREE NPP memory
Now if you have /3GB switch enabled in c:/boot.ini that means Kernel memory (2 Gb) would be cut into half(1 Gb) so that would impact of NPP ( Down from 256 MB to 128 MB).By adding /3GB your user mode application might get some more breathing room but that is at the expense of Kernel Memory (including NPP memory)
Technically if NPP usage is close 100 MB, IIS should start rejecting requests with Connections_refused in httperr logs.
So by simply by removing /3GB switch you would reduce the chance of server failure by 50%
Refer KB Article: http://support.microsoft.com/kb/316739
Note: Using only the /3GB switch allocates 1 GB to the kernel and 3 GB to the User-mode space.
Using this switch reduces the memory available in the following system pools:
• Nonpaged Pool
• Paged Pool
• System Page Table Entries (PTEs)
With just removing /3gb it would provide you some relief by 50% meanwhile you can work on identifying the real culprit driver whose is eating up NPP memory.