Windows 2000 memory subsystem tweaking

The ins and outs of the Windows 2000 memory subsystem.

Introduction

The memory subsystem is always one of the most important systems to tweak within an OS. Not only does it control the RAM, but it also dictates much of how the other subsystems within the computer communicate with each other. Since Windows 2000 is the 'performance' OS of the Microsoft world, it makes sense to squeeze all the speed out of the memory subsystem as possible, hence this article. Within, we will be covering such topics as removing some of the bloat from the OS and tweaking the registry. The different tweaks occur in different areas, but all affect the OS's memory usage. We'll start out with some BIOS tweaks (that are good for just about any PC, not just those with Windows 2000), but with the other tweaks, make sure you've logged off your normal user account and come back in as an administrator, because otherwise some of these optimizations simply won't stick.

?

BIOS Tweaks

There are several settings within the BIOS that can be used to tweak the memory subsystem. Here is a rundown of the most common ones:

CAS Latency - CAS latency is a setting which determines the column access time for the RAM in your system. The lower the latency, the faster and more frequently the computer is able to access the RAM for different pieces of information. SDRAM has a standard latency of 3, but most pieces can handle a latency of 2. You can also buy SDRAM spec'ed to run at CAS 2 for a price. RDRAM, on the other hand, has a much higher latency, and it is more greatly affected by a change in latency, so I wouldn't recommend fooling with latency settings if you are using it. Warning: Lowering the latency of your RAM below its specification is a form of overclocking, so be careful. You might also want to run a stability test (timedemo loop or something similar) after lowering the latency to make sure your system is stable.

RAS to CAS Delay - This setting determines the amount of time between a row activate command and a read/write command. A lower setting is faster, but take the same precautions with this setting as you would with changing the CAS latency.

RAS Precharge Time - This setting determines the number of cycles the RAM requires between DRAM refreshes to accumulate its charge. A lower setting here will speed up the system memory, at the risk of causing instability. Again, be careful to make sure that your system is stable after modifying this setting.

SDRAM Precharge Control - This setting determines how the computer manages the precharging times for the SDRAM. Results may vary with this setting, so test both, and use whichever works best. This setting defaults to disabled on most systems.

Shadow System BIOS - Enabling this setting copies the system BIOS into main memory for faster execution. Most users will have a speed increase with this setting enabled, in both startup time and overall system execution.

System BIOS Cacheable - Enabling this setting will allow the system to cache the BIOS to the L2 cache when necessary, speeding up BIOS execution even more than a shadow. This setting works best when used in conjunction with a shadowed system BIOS.

?

Registry Settings

Several Registry settings can be used to tweak the memory subsystem from within Windows 2000. However, be careful, because it is very easy to kill Win2k by fooling around with the Registry. As was said before, you should be careful to back up copies of any of the values you choose to change, just in case the setting doesn't quite work out for you. The following values can be found at [HKLM/System/CurrentControlSet/Control/Session Manager/Memory Management]:

DisableExecutivePaging - When enabled, this setting will prevent the paging of the Win2k Executive files to the hard drive, causing the OS and most programs to be more responsive. However, it is advised that people should only perform this tweak if they have a significant amount of RAM on their system (more than 128 MB), because this setting does use a substantial portion of your system resources.? By default, the value of this key is 0.? To enable it, set it to 1.

LargeSystemCache - When enabled (the default on Server versions of Windows 2000), this setting tells the OS to devote all but 4 MB of system memory (which is left for disk caching) to the file system cache. The main effect of this is allowing the computer to cache the OS Kernel to memory, making the OS more responsive. The setting is dynamic and if more than 4 MB is needed from the disk cache for some reason, the space will be released to it. By default, 8MB is earmarked for this purpose. This tweak usually makes the OS more responsive. It is a dynamic setting, and the kernel will give up any space deemed necessary for another application (at a performance hit when such changes are needed).?As with the previous key, set the value from 0 to 1 to enable. Note that in doing this, you are consuming more of your system RAM than normal. While LargeSystemCache will cut back usage when other apps need more RAM, this process can impede performance in certain intensive situations. According to Microsoft, the "[0] setting is recommended for servers running applications that do their own memory caching, such as Microsoft SQL Server, and for applications that perform best with ample memory, such as Internet Information Services."

IOPageLockLimit - This tweak is of questionable value to people that aren't running some kind of server off of their computer, but we will include it anyway. This tweak boosts the Input/Output performance of your computer when it is doing a large amount of file transfers and other similar operations. This tweak won't do much of anything for a system without a significant amount of RAM (if you don't have more than 128 MB, don't even bother), but systems with more than 128 MB of RAM will generally find a performance boost by setting this to between 8 and 16 MB. The default is 0.5 MB, or 512 KB. This setting requires a value in bytes, so multiply the desired number of megabytes * 1024 * 1024. That's X * 1048576 (where X is the number, in megabytes). Test out several settings and keep the one which seems to work best for your system.

?

Disabling Startup Programs

Disabling startup programs within Windows 2000 isn't nearly as simple as it is in Windows 9x/Me, where you can manage that task from within the System Information program. The only way to disable startup items that aren't in your Startup folder is to open up Regedit and browse to [HLKMSOFTWAREMICROSOFTWINDOWSCURRENTVERSIONRUN]. From there, you can manually delete the values, which are starting the unwanted applications. We would recommend that you export the values that you intend to delete, however, just in case you make an error.