I’m seeing a driver failure on Windows 2003 caused by the inability to
allocate common memory. Looking at !memusage I see
Zeroed: 169260 (677040 kb)
Free: 4 ( 16 kb)
I am pretty sure common memory has to come from the free pages, so there
isn’t much available. Even though there is 677 Megabytes of unused memory on
the zerored list, there are only 4 pages for common memory. Is there any way
to get the OS to keep more memory in the free page list (like a registry
entry)?
AllocateCommonBuffer ends up calling
MmAllocateContiguousMemorySpecifyCache which can use pages
from free, zeroed and standby lists.
How many pages are you trying to allocate? Do they all have to be
contiguous? If not, try doing several smaller (ideally,1-page) allocations
instead of a single big one.
–
This posting is provided “AS IS” with no warranties, and confers no
rights.
“Jan Bottorff” wrote:
I’m seeing a driver failure on Windows 2003 caused by the inability to
allocate common memory. Looking at !memusage I see
Zeroed: 169260 (677040 kb)
Free: 4 ( 16 kb)
I am pretty sure common memory has to come from the free pages, so there
isn’t much available. Even though there is 677 Megabytes of unused memory
on
the zerored list, there are only 4 pages for common memory. Is there any
way
to get the OS to keep more memory in the free page list (like a registry
entry)?