In Windows 2000, a fair amount of the memory reserved specifically for the kernel is devoted to two things: the paged address pool and the kernel stack. The paged address pool is memory used by kernel-mode components, such as Ring 0 drivers. The kernel stack is memory reserved for use by each thread in the kernel for system calls. Both of these memory allocations use the same portion of 2-GB space reserved for the kernel, but the balance...
of the memory allocation between the two of them is "soft-wired" into Windows 2000.
On some servers with exceptionally high loads, or that have large numbers of users logging in via Terminal Services, you may notice unexpected errors, such as the computer refusing to accept new logins or the failure of kernel-level drivers. This is usually a sign of the paged address pool or kernel stack running out of memory. STOP 0x0000003F or STOP 0x000000D8 errors are another symptom of this problem.
The kernel stack area is set to be as large as possible when Terminal Services is in use, so if this problem is appearing on a system that uses Terminal Services a great deal, the paged address pool is probably running out of room. To fix this, you need to adjust the memory partition between the paged address pool and the kernel stack.
To change the partition, edit the following Registry key:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\SystemPages
This value is generally set by default for the maximum number of users, but if it is less than 7,000 (decimal), set it to between 7,000 and 50,000 depending on the number of users you have. You can find a detailed way to compute what threshold to use in Knowledge Base article Q247904, using a remote debugging session to obtain live statistics. Generally, though, the SystemPages setting should be 40,000 or greater where possible.
If your computer does not already have the maximum amount of physical RAM installed, you may also want to look into adding RAM as another preventive measure, especially if the machine was in need of a RAM upgrade to begin with.
Serdar Yegulalp is the editor of the Windows 2000 Power Users Newsletter.