NonPagedPool and 64MB NVRAM device

Hi all,

I work with a device with up to 64MB of NVRAM on it that is
mapped into a single user process with an IOCTL. The NVRAM
is used as a redundant store for realtime data (saving to a
hard drive is too slow and wears out the drive very quickly).
The NVRAM is mapped into the process for its entire lifetime
as the process needs to write to it almost continuously.

This works OK on most of the machines that the software runs
on except for a large NT4/Enterprise server with 1GB RAM that
creates ~340 gathering processes that communicate with the
data store. I know 340 is way too many but this is a legacy
system that can’t be changed just yet :-(.

My problem is that the system needs to create a few more
gathering processes and the NonPagedPool limit appears to be
kicking in (64MB allocated to the card and 64MB used by the
processes). There are also around 3500 threads and 130,000
handles in the system at this point – no wonder the system
is under stress ;->

What I need to know is: is there any way to stop the NVRAM
from being classified as non-paged pool or raising the NPP
limit above 128MB on NT4? Was the limit silently changed
with SP6a, for example?

Thanks in advance for any advice,

John Bates.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

I could be wrong, but I don’t think your on-device memory is considered
‘non-paged pool’. I think that instead you are most likely running out
of system PTEs. If I recall correctly, you can adjust the number of
system PTEs in the registry.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@devstuff.com
Sent: Tuesday, July 10, 2001 12:00 AM
To: NT Developers Interest List
Subject: [ntdev] NonPagedPool and 64MB NVRAM device

Hi all,

I work with a device with up to 64MB of NVRAM on it that is
mapped into a single user process with an IOCTL. The NVRAM is
used as a redundant store for realtime data (saving to a hard
drive is too slow and wears out the drive very quickly). The
NVRAM is mapped into the process for its entire lifetime as
the process needs to write to it almost continuously.

This works OK on most of the machines that the software runs
on except for a large NT4/Enterprise server with 1GB RAM that
creates ~340 gathering processes that communicate with the
data store. I know 340 is way too many but this is a legacy
system that can’t be changed just yet :-(.

My problem is that the system needs to create a few more
gathering processes and the NonPagedPool limit appears to be
kicking in (64MB allocated to the card and 64MB used by the
processes). There are also around 3500 threads and 130,000
handles in the system at this point – no wonder the system
is under stress ;->

What I need to know is: is there any way to stop the NVRAM
from being classified as non-paged pool or raising the NPP
limit above 128MB on NT4? Was the limit silently changed with
SP6a, for example?

Thanks in advance for any advice,

John Bates.


You are currently subscribed to ntdev as:
xxxxx@hollistech.com To unsubscribe send a blank email to
leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

There’s a Microsoft KB article that describes some of this limitation and
how to increase the available PTEs for mapping into system address space.
Take a look at (don’t worry if the title doesn’t seem quite right - the
relevant info is in the first few paragraphs):

http://support.microsoft.com/support/kb/articles/Q189/3/27.ASP

Timothy A. Johns — xxxxx@driverdev.com
Driver Development Corporation — 800.841.0092
Bring Up Your Hardware — Fast. www.driverdev.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of xxxxx@devstuff.com
Sent: Tuesday, July 10, 2001 12:00 AM
To: NT Developers Interest List
Subject: [ntdev] NonPagedPool and 64MB NVRAM device

Hi all,

I work with a device with up to 64MB of NVRAM on it that is
mapped into a single user process with an IOCTL. The NVRAM
is used as a redundant store for realtime data (saving to a
hard drive is too slow and wears out the drive very quickly).
The NVRAM is mapped into the process for its entire lifetime
as the process needs to write to it almost continuously.

This works OK on most of the machines that the software runs
on except for a large NT4/Enterprise server with 1GB RAM that
creates ~340 gathering processes that communicate with the
data store. I know 340 is way too many but this is a legacy
system that can’t be changed just yet :-(.

My problem is that the system needs to create a few more
gathering processes and the NonPagedPool limit appears to be
kicking in (64MB allocated to the card and 64MB used by the
processes). There are also around 3500 threads and 130,000
handles in the system at this point – no wonder the system
is under stress ;->

What I need to know is: is there any way to stop the NVRAM
from being classified as non-paged pool or raising the NPP
limit above 128MB on NT4? Was the limit silently changed
with SP6a, for example?

Thanks in advance for any advice,

John Bates.


You are currently subscribed to ntdev as: xxxxx@driverdev.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

I maybe wrong in asking this tho’
Do you really need to map the entire 64MB adapter RAM ?

Is it possible for (re)design the app / driver such that you map only as
much as you need and then unmap them.

Alternatively you might want to look at MDL chaining with selective probe
and lock.

There is a registry entry using which you could increase the default number
of PTEs. But generally there are only 50,000 PTEs entries left for us to
have after the OS is done with them.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
\Memory Management\SystemPages


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

> What I need to know is: is there any way to stop the NVRAM

from being classified as non-paged pool or raising the NPP

Device memory is not nonpaged pool at all.
The limit you hit is system PTEs limit (they are necessary to provide
virtual addresses to the device memory physical addresses), not NPP limit.

Max


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com