a Query!

Hi all,

Is there any limit on the total Kernel memory Usage in NT 4.0 (i am using
the NT TaskManager to look at the total kernel memory)
if so, could somebody pass me the info.

thanks,
KIRAN MANDAVA,
Software Engineer.
SkyStream Networks
“Building the Broadcast Internet”

As you’ve discovered, there’s a limit on the number of system PTEs used
for mapping physical memory to system-space virtual addresses. Paged
and nonpaged pools, plus any user buffers you lock and map, all consume
these PTEs. So yes, there is an effective limit.

There is a registry entry you can make to increase the number of system
PTEs allocated, but there is a ceiling on how high you can increase this.
It is entirely conceivable for you to have more physical memory than can
be mapped into system space. When I had a NO_MORE_SYSTEM_PTEs blue-screen,
I eventually learned that increasing the number of PTEs was not the
solution to my problem. I had to stop mapping I/O buffers into system
space at all, instead rearchitecting my drivers to work with MDLs.

The problem can be exacerbated by odd application behavior, specifically
using the same buffer in several outstanding I/Os. For example, imagine
an application that does an overlapped write from the same 20 MB buffer
to each of 16 different devices. If you map each incoming user buffer
into system space, you’ve burned 320 MB worth of system PTEs (81920), well
above the default number available (10000) or the maximum (50000). If you
were able to recognize that it was the same buffer, you could get by with
a single system-space mapping, consuming 5120 PTEs. If you work with
MDLs, you don’t consume any system PTEs.

If you’ve got a driver that needs to look at or modify the data, such
as compression or encryption, and if you are in fact the party doing
the mapping, then you’ll have to come up with some sort of throttle
on the amount of memory you map at any given time.

MmProbeAndLockPages() shouldn’t consume PTEs, but MmMapLockedPages()
does. Note that MmGetSystemAddressForMdl() can call MmMapLockedPages().
When you’re done with a mapping, be sure to call MmUnmapLockedPages().


Dave Cox
Hewlett-Packard Co.
HPSO/SSMO (Santa Barbara)
https://ecardfile.com/id/Dave+Cox

-----Original Message-----
From: Kiran Mandava [mailto:xxxxx@skystream.com]
Sent: Tuesday, April 11, 2000 5:41 PM
To: NT Developers Interest List
Subject: [ntdev] a Query!

Hi all,

Is there any limit on the total Kernel memory Usage in NT 4.0 (i am using
the NT TaskManager to look at the total kernel memory)
if so, could somebody pass me the info.

thanks,
KIRAN MANDAVA,
Software Engineer.
SkyStream Networks
“Building the Broadcast Internet”


You are currently subscribed to ntdev as: david_cox2@hp.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

Hi all,

What happens if i build two MDLs describing the same NonPagedPoolbuffer and
do some operations like mmprobeandlockpages and mmunlockpages on one of the
MDL…

KIRAN MANDAVA,
SkyStream Networks
“Building the Broadcast Internet”