Since Windows Server 2008, the Windows operating system will reserve memory during system boot. 3% of the total memory is used for the initial Non-Pagable memory. This memory allocation cannot be verified from task manager or performance monitor counter. The tools like RAMMAP, Xperf or Memory dump file can be used to verify the information. Under RAMMAP, this area will be shown as Non-paged pool area.
Note that the Non-paged pool area seen under RAMMAP is not the same as the non-paged pool usage observed from task manager.
The Memory Manager keeps track of each page of memory in an array called the PFN database and, for performance, it maps the entire PFN database into virtual memory, this memory will always be resident on the RAM. The PFN database itself shows up as pool in the data that the memory manager returns to RAMMAP, so it’s not just purely non-poaged pool, but other non-pageable memory manager structures as well.
This becomes the main reason that we see a significantly high number for Non-Paged memory in Rammap.
Task manager and perfmon shows the actually consumed non-paged pool memory. For troubleshooting virtual memory consumption, the perfmon tool should be used for correct information.
Under kernel dump file:
kd> x nt!mmsizeofnonpagedpoolinbytes
fffff800`01ac61c0 nt!MmSizeOfNonPagedPoolInBytes = 0x00000003`d6fe3000
Evaluate expression: 16491884544 = 00000003`d6fe3000
Under Rammap vs. Task Manager
Note: The use of tools mentioned in this article totally depends on what you need to know. If you want to know the state of the RAM in respect to the page states then RAMMAP is the best tool to use.
Article ID: 2762246 - Last Review: Apr 24, 2015 - Revision: 1