Excellent article on Non-Paged Pool

| 2 Comments | 2 TrackBacks

Mark Russinovich has an excellent piece (here) on how 'non-paged pool' memory sizes are calculated for various versions of Windows operating systems. As those of you who are dealing with high performance, high connection, server systems know, non-paged pool is one of those annoying system wide limits that can sometimes get in the way of servicing a large number of clients as every active I/O operation consumes some non-paged pool. The good news is that on Vista x64 systems and later the way that non-paged pool limits are calculated has changed and the limits are much higher.

As I've said on here before, exhausting non-paged pool can leave a machine in a very unstable situation and as such it's good to profile your server and limit the number of connections that it can service to those that it can service safely. Of course profiling like this is a complex matter. Mark has a tool linked from his web page, NotMyFault, which can 'leak' non-paged pool and so allow you to place a machine in an exhaustion, or near to exhaustion situation for testing.

Something else that interests me is that Mark's Process Explorer tool can find and report the maximum size of the non-paged pool using dbghelp.dll and the windows symbol files. Knowing the size of the pool (and the rate at which I/O requests and other socket server related actions uses the pool) would enable me to build some safeguards to prevent non-paged pool exhaustion into The Server Framework itself... Something for me to think on.

2 TrackBacks

To enable network applications to send and receive data via a TCP connection reliably and efficiently the TCP protocol includes flow control which allows the TCP stack on one side of the connection to tell the TCP stack on... Read More

I've been looking at the Windows 8 Registered I/O Networking Extensions since October when they first made an appearance as part of the Windows 8 Developer Preview. Whilst exploring and understanding the new API I spent some time putting... Read More


I've also been investigating this same question - how can i address the kernel memory limits in my code?

have you advanced in finding an answer to this?

I haven't had a chance to look into this yet. Sorry.

Leave a comment