Admin Tip #95: Windows NT Memory management parameters

Hits: Failed to execute CGI : Win32 Error Code = 3


The Control Panel offers a tuning adjustment to the Server service for NT Server (ControlPanel/Network/Services/Server/Properties). This dialog is not available in NT Workstation, but the following registry adjustments will give the same result. The correspondence between the registry settings for LargeSystemCache and LanmanServer\Parameters\Size and the Control Panel interface found in server is:

Control Panel Label

Size

LargeSystemCache

Minimize Memory Used

1

0

Balance

2

0

Maximize Throughput for File Sharing

3

0

Maximize Throughput for Network Applications

3

1

If you enable Maximize Throughput For Network Applications, the following applications will benefit:

However, be aware that with Maximize Throughput For Network Applications enabled, performance will suffer for each of the following:

These standard settings are built into server's Control Panel. You can use any combination. If you want to push your systems performance (maybe push it over) twiddle with these settings at your own risk.

LargeSystemCache is the one of the two registry settings manipulated by the Control Panel dialog not available in NT Workstation. If you turn on LargeSystemCache=1, assuming you have 96MB+ RAM, then you should see a significant performance boost for CPU and AV intensive applications but little or no improvement for I/O bound applications. I would use 128MB and 256MB as minimums for Windows 2000 Pro and Windows XP Pro, respectively.

Hive: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
Key: Memory Management
Name: LargeSystemCache
Type: REG_DWORD
Value: 0 or 1

LanmanServer\Parameters\Size is the other registry setting manipulated by the Control Panel dialog not available in NT Workstation.

Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer
Key: Parameters
Name: Size
Type: REG_DWORD
Value: 1, 2, or 3

DisablePagingExecutive default setting was "set" when RAM was precious and scarce. Portions of system code and device drivers can be paged to disk when the system needs more page frames in RAM. The system slows when it next needs that code or drivers since it must load them from the page file. The system stops while the required code is swapped in or out of RAM dependent on very long hard drive access times. If you have more than sufficient RAM, disabling paging will speed the system overall. I am not sure I would turn on this option with less than 512M, at least for W2K and XP Pro. A CPU intensive setting.

Hive: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
Key: Memory Management
Name: DisablePagingExecutive
Type: REG_DWORD
Value: 0 paging allowed
Value: 1 paging disallowed

IoPageLockLimit controls the size of memory buffers for I/O devices. The default minimizes RAM usage. An I/O intensive system could benefit from larger buffer sizes. Caution: setting this parm too high can result in slower performance. Set it in increments and see how it effects your system. Windows NT / W2K / XP.

Hive: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
Key: Memory Management
Name: IoPageLockLimit
Type: REG_DWORD
Value: 0x00000000 512KB
Value: 0x00100000 1MB
Value: 0x00200000 2MB
Value: 0x00400000 4MB
Value: 0x00800000 8MB

SecondLevelDataCache records the amount of L2 cache that is available on the processor(s). If HAL cannot retrieve this from the hardware or BIOS, it sets this parameter value to 0, indicating that a built-in default size of 256 KB of L2 cache should be used. Most Pentium II and III systems use 512 KB or more of L2 cache memory. The Xeon chips support 1 MB and 2 MB caches. You can get significantly better performance if this is set to match the actual amount of L2 cache. Setting the value higher than the actual amount of L2 cache available may prevent the system to be unstable. Check your documentation carefully. Multiprocessor systems have processors with identical speeds and caches.

Hive: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager
Key: Memory Management
Name: SecondLevelDataCache
Type: REG_DWORD
Value: 0x00000000 256K L2 cache
Value: 0x00000200 512K L2 cache
Value: 0x00000400 1M L2 cache
Value: 0x00000800 2M L2 cache

Microsoft states that the above is erroneous and that the second level (L2) cache is recognized by the NT/W2K/XP and is fully utilized regardless of the setting of this parameter. Thus I would not twiddle with it, although if Microsoft is correct, it doesn't matter.

PagingFiles is a pointer to the drive locations of the pagefiles and the minimum and maximum sizes for the pagefiles. You should set by using Control Panel, System, Virtual memory, Change button.

There are other parms in this key but as far as I can tell, the complexity is best handled by NT's dynamic setting at boot. If you don't ever reboot the box, these other parms never get twicked by the OS. I recommend automating a reboot on off hours once a week or whatever interval makes since given the changing mix of whats running on the server. This also prevents applications with memory leaks from bring down the system. This is most useful on servers under heavy loads.

Related:
Gather information so that Microsoft support engineers can troubleshoot performance problems Q175658
PagedPoolSize and NonPagedPoolSize Values in Windows NT Q126402
STOP 0x78 When NonPagedPoolSize > 7/8 of Physical Memory Q184758
How to Use Poolmon to Troubleshoot Kernel Mode Memory Leaks Q177415
Heap Manager Change in Service Pack 4 Q195008
Registry Size Limit Change Results in PagedPoolSize Change Q140364
Multiple Entries in Zone File Cause Memory Leak in Dnsadmin.exe Q182713
COPY Command Causes File Cache to Grow (NT4,SP4) Q163880
Configuring Page Files for Optimization and Recovery Q197379