1

Since I upped my memory on my computer, the non-paged pool became really big (went up from 96MB with 2GB ram to 715MB with 16GB).

Left to right: paged pool measure by Rammap at 715MB, task manager with "see all processes" at not even 1MB (NP column) and the registry settings at 192MB which are simply ignored

It is not understandable as the task manager reports less than 1MB of non-paged pool due to processes. And Poolmon report 35MB for the biggest non-paged pool memory usage.

enter image description here

This screenshots have been made just after startup, so it's not a memory leak in a driver or so. Making an image and starting it in a VM, only 350MB of memory are used after startup!

Microsoft gives a value in the registry to limit the non-paged pool size here: https://technet.microsoft.com/en-us/library/cc976155.aspx but doing so and restarting doesn't solves the problem. I tried giving values in bytes (documentation say so), in KB and MB. No luck.

On Linux, I can render 3D scenes taking up to 15,2GB. On windows, due to some protection and this huge pool, I can only use 12GB and then it starts swapping to disk which makes one render take > 20 minutes instead of 1min24s on Linux.

So how can I limit the non-paged pool size?

matali
  • 61
  • 6
  • 1
    look with poolmon, which pool tag has most allocated bytes: http://superuser.com/a/674725/174557 – magicandre1981 Feb 03 '16 at 05:13
  • That TechNet page is a subsection under "**Windows 2000** Registry Reference." afaik the Paged... and NonPagedPoolSize registry values haven't been de-implemented in all x64 Windows, and also in x86 Windows since Windows 7 (due to dynamic kernel space allocation). They were originally mostly there as a way to force _increases_ in pool allocation (for benefit of drivers that needed unusually large amounts). Anyway, the right answer is to find what's using so much pool and get rid of it, not limit the amount that can exist. The latter approach might well cause crashes. – Jamie Hanrahan Feb 03 '16 at 21:59
  • btw, what does "non-coherent" mean? – Jamie Hanrahan Feb 03 '16 at 23:00
  • magicandre1981 I'll install poolmon this WE. Jamie Hanrahan: For the "non-coherent": If you look at the non-paged pool size in Rammap and the Taskmanager (with all processes visible), it doesn't match. But I guess the driver's memory usage is not listed in the task manager. If I uninstall all drivers one by one, will it help detecting which one is giving this problem? Poolmon seems to be relatively complicated to get working. – matali Feb 05 '16 at 08:12
  • @magicandre1981 I added the poolmon result to my question. But poolmon only reports 35MB for the biggest non-paged pool memory user. After that, I started in safe-mode, so graphic card and other driver was disabled, but the non-paged pool reported by Rammap was still at 711 MB. – matali Feb 05 '16 at 09:23

1 Answers1

0

Running a program requiring a lot of memory (like a 3D or photo application) and let it take enough memory to start using the pagefile will make the non-paged memory to be released.

I have no idea why, but at the exact moment the pagefile starts to be used, the non-paged pool fall from 750MB to 200MB and stays at this level after that (tested during several hours of intensive work with lot's of programs running and using a lot of memory).

It makes windows7 to only bloc 350MB of memory from the 16GB total (compared to the 1GB total at startup) in my case. Of course, much more memory is being used, but it's good usage through caching, which makes it available while making program to start faster and data to be read from RAM instead of disk. Such a huge default non paged pool is simply lost memory, making the system to start swapping much earlier than it should.

This bug of a huge starting non-paged pool doesn't happen on versions of windows prior to 7.

matali
  • 61
  • 6