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).
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.
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?
Answer
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.
No comments:
Post a Comment