Optimizing the SYSTEM.INI File for Performance

The following settings changes can be made to the SYSTEM.INI file in Windows 95, 98 and ME.  Read each section carefully, because not all of these tweaks apply across the board - a few will work only in 98, for example.  And always, always, always back up your SYSTEM.INI before editing it.


This setting has different meanings depending on which version of Win9x you are using. It wasn't even introduced as a setting until Windows 98 came out, so don't bother with this one if you are still running Win95. If you are running Windows 98 or 98SE , this setting will force the computer to use the swap file in a "conservative" way, which in other words is the same way as Windows 95 did.

If you are running on Windows Me (this is one of the big speed tweaks for WinMe, particularly if you have more than 128 Mb of RAM), this setting will tell Windows not to use the swapfile at all until all of the RAM is used. After all of the RAM is used, the computer will push off the most infrequently used data to the swap file. This setting goes under the [386Enh] section.


This setting will tell the computer to reserve a buffer in system memory for DMA (Direct Memory Access). If you are using any DMA enabled pieces of hardware on your system, it is advisable that you set this equal to 64 Kb (the line would read DMABufferSize=64 ). This setting goes under the [386Enh] header.


This setting tells the operating system to load its local drivers into upper memory by default as opposed to trying to squeeze them into conventional memory. Even though you'd think this wouldn't matter anymore, DOS still does play a role in how fast the operating system and leaving it whatever resources it might need is important. To enable this tweak, you should insert the line LocalLoadHigh=1 under the [386Enh] section.


This setting tells the computer to dedicate a certain amount of memory in RAM to buffer the hard drive rather than allowing the computer to dynamically handle the buffer(s) (this is unclear because my documentation on this setting is incomplete). In my experience, the optimal setting for this is 32, which I believe is the largest value recognized by the operating system. I have not tested this tweak with any other operating system other than Windows ME, so this may do nothing on Win9x systems. To enable this setting, add the line PageBuffers=32 to the [386Enh] section.


These settings, which can also be set using programs such as Cacheman , determine the possible sizes of the vcache , or part of main memory which contains binary code that is directly executable by the processor. Windows will increase the size of this cache far past what it really needs when allowed to manage it dynamically, so it is best that we set it ourselves.

The setting is in KB, and generally the best settings for this are approximately 10% of your RAM ( MinFileCache ) and approximately 25% of your RAM ( MaxFileCache ). Which settings are best for your system depend a lot on how you use it, so I can't be more specific. To calculate the values you want for the vcache , multiply the number of MB you want used for vcache by 1024 (converting it to KB). For example, 16 MB would be 16384 Kb, so you would put in MinFileCache=16384 if you wished the minimum setting for the vcache to be 16 MB or MaxFileCache=16384 if you wished the maximum setting to be 16 MB.


This setting determines how large the chunks are that are allocated to each program residing in the vcache. A program can have more than one chunk, but if it doesn't divide evenly into the size of the chunk, some RAM goes unused (much like how FAT works for hard drives). On one hand, having a smaller chunk size allows for less wasted RAM in the vcache, however, on the other hand, a larger chunk size increases the access speed for the vcache.

Depending on how you use your system, and how much RAM you have to spare, it will determine whether or not you want a large chunk size. common values for this setting are 128, 256, and 512 KB. 512 seems to work well; 1024 may be better for a system that is used for video.  This setting is formatted as chunksize=XXX , where XXX is the value in KB, and the setting is placed under the [vcache] header.