Wednesday, November 30, 2011

Windows ME Maximum Memory

If you ever wondered how much memory is the maximum that the older Windows 9x/ME line of Windows systems supports actually, take a look at this picture:


Yes, the answer is almost 2 GB RAM!
And it's perfectly stable like this, I've run memory tests.


I've read many posts on the internet, that they not recommend to use more than 1 GB of RAM for the Win9x/ME versions, because it causes many problems, and even Windows won't start in some cases.


So I've fired up VMware (version 7.1.5 in this case) and begin testing on the freshly installed Windows ME English version (without any updates).
I've not noticed any problems with 1 GB of RAM, but if I increased RAM to 2 GB on the virtual machine, it wouldn't boot up.
Either locked with VMM bluescreen or powered off the virtual machine :)


That was because there is a bug with Win9x/ME's memory manager, and the file cache.
Every time Windows starts, it checks how much memory is in the computer, and adjusts the file cache to some percent of it. That works fine with memory up to 512 MB.
Just with this much memory, the VMM driver can't handle it and just freeze the system completely (it was designed to work with maximum 2 GB memory). With memory just below 2 GB, the system can start, but then the other bug comes with VCache (the file cache) which eats up all memory available from Windows, then not enough memory to load itself.


So we have to fix 2 problems at the same time, to get a boot with memory over 1,99 GB.
First of all, tell Windows that don't use more memory than 1992 MB.
That is done in the system.ini file (C:\Windows\system.ini) with this option, add this line under the [386Enh] section:



MaxPhysPage=7C6FF


It's in HEX format, and I've used an online DEC-to-HEX converter to get this value (however it must always end with FF, because if not, Windows may give funny values to the RAM limit, once I managed to boot with 6 MB RAM - it took a while and the network driver failed too :)).
[Please note that maybe Windows will only boot with even less RAM defined here, every system is different. If it won't work at first, try to use less value, by calculating a different HEX value]


Then, to make the VCache to work correctly, use these settings, also in the file system.ini, at the [VCache] section:



MinFileCache=5120
MaxFileCache=524288

This will limit the memory to use for the file cache to a maximum of 512 MB, and minimum value of 5 MB.
You can use any value you like, just make sure to stay below about 1700-1800 MB, as Windows still needs memory to load.
Also, I've read that with certain system configurations, with a big AGP aperture size, even less cache size is required to get a boot.
So be careful about giving it too big value.
I think 5 MB for starting size is good, it won't use memory when it's not needed. And 512 MB maximum is more than enough for anything you would ever use on such a Windows version :)
Maybe 128 MB is also enough.

Remember, both options are needed, or otherwise it won't boot. Believe me I tried many times.

In case you use wrong values and Windows doesn't boot, don't panic, just use a Win98 boot floppy or a WinPE/Linux live boot CD which can access the C: drive of Windows, and just modify the system.ini file from there, to give lesser values.
Or just take out the extra memory from the computer to have less than 2 GB, and modify after Windows boots up.
On a virtual machine this is much more easy, just mount the virtual hard drive as writable, and modify system.ini from the host system.

Here is this section of my customized system.ini file for reference:

[386Enh]
;Limit RAM to 1.99 GB: MaxPhysPage=7C6FF
MaxPhysPage=7C6FF

[VCache]
;Minimum 5MB file cache
MinFileCache=5120
;Maximum 512MB file cache
MaxFileCache=524288


Have fun and enjoy! :)

More info can be found here, what Microsoft says about the problem:
http://support.microsoft.com/kb/253912

Also, good to read this board for more info:
http://www.msfn.org/board/topic/109574-help-i-need-to-get-2gb-installed-ram-working-in-win98se/


Now you may ask, why would anybody want to use the old Windows 9x/ME system nowadays, and do this crazy thing to feed it with more than 2 GB memory.
The answer is just, because I can, then why not?
Nowadays we have insane amount of memory in our computers, according to the time of these systems, then it's good to test out how they behave in such extreme circumstances.
And I like Windows ME, with a disabled System Restore [it's buggy, disable it!] it works like a charm (and much faster than Win98 with enough RAM).

Next time I will check how much memory can Windows 3.x handle :)




No comments:

Post a Comment