OOM Error

OOM Error

Vista64 and Win7x64 Users: None of the following applies to you!!!


All 32 bit operating systems (WinXP and Vista32) have 4 GBs of "Virtual Address Space" (VAS) to work with, as that is the maximum number that can be expressed with only 32bits. The VAS table is the same size whether your system has 512MB RAM or 4GB of RAM...

By default, 2GB of VAS addresses are reserved for the operating system, with the remaining 2GB of VAS reserved for application programs. Note that every application running maintains it's own set of VAS addresses, and that the operating system will take care of shuffling both the application's address table and the data contents back and forth from the Virtual Memory on the hard drive as necessary.

Obviously, everytime a running application needs to access it's VAS table and data, the OS needs to swap things around. The more application programs running at once, the more things get slowed down.

When you add the /3GB switch, what you are doing is increasing the total available Virtual Address Space (VAS) for FSX to use, which in turn reduces the available VAS for the operating system.

It's a case of "robbing Peter to pay Paul..."

What the 3GB "tweak" accomplishes in both WinXP and Vista32 is that you essentially increase the size of the VAS table available to ALL running programs for which the "flag" for "LARGEADDRESSAWARE" has been set. The FSX.exe for both RTM, SP1 must be manually made "LARGEADDRESSAWARE", where the SP2 FSX.exe has already been marked as "LARGEADDRESSAWARE."

In all cases though, the onus is on the user to tell their operating system to increase the VAS for all "enabled" application programs. The procedure for WinXP and Vista are different, but the results are identical.

This next bit of information is critical to coming to a more full understanding of what is causing the "OOM Error" to occur:

FSX will only use "contiguous 1MB blocks of VAS."

Anytime FSX cannot find a 1MB block of VAS in which to "load stuff," it will summarily crash to desktop...

Incidentally, it's also important to note that the amount of memory on a video card can actually hinder performance rather than help...

...that is because the video card's memory addresses are mapped to the operating system's slice of VAS, and therefore reduces the total number of Virtual Addresses available the operating system...

For example, a video card with 512MB of onboard RAM will consume 512MB of the available operating system's slice of VAS, so robbing too much from the OS's slice can cause a lot of problems. As always, this is a balancing act...

ENABLING AND FINE TUNING VAS

As I stated previously, since it's a case of "robbing Peter to pay Paul," it may be best to allocate LESS than a full GB of additional VAS to applications, which is why Phil Taylor recommends using /2560 rather than the full /3072 MB.

NOTE: The following applies only to WinXP users:

Here is a method that will allow you to try it in a non-destructive manner. It will allow you to choose at boot time which environment you want to load:

a) Access the boot.ini file by opening the System Properties dialog on "My Computer". Under the Advanced tab and Startup and Recovery press Settings. In the startup and recovery dialog press the edit button. This should open a text file with something close to the following content:

timeout=30

default=multi(0)disk(0)rdisk(0)partition(1)\WIN DOWS

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /fastdetect /noexecute=optin

b) We are are going to modify it and make a failsafe so that if the mod doesn't work we can go back to the original setting:

Copy the last line and add /3GB to the end of it (make sure you spell it right). Type 3GB at the end so you'll be able to recognize it when XP restarts. Also if you don't have noexecute=optin add that too. The whole thing will look like this

timeout=30

default=multi(0)disk(0)rdisk(0)partition(1)\WIN DOWS

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition" /fastdetect /noexecute=optin

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition 3GB" /fastdetect /noexecute=optin /3GB

c) Save the file and restart the machine. Now you will have 2 choices when booting. Pick the '3GB'. If it crashes or you experience any other problems go back to the first option. Later try adding the userva=nnn switch to the last line of boot.ini and save. This is how the last line would look:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Home Edition 3GB" /fastdetect /noexecute=optin /3GB /userva=2560

Also check System Properties and make sure that under the General tab it say Physical Address Extension at the bottom.

To "fine tune" the actual amount of VAS allocated, you need modify the switch at the end of the entire entry:

/Userva=nnnn where nnnn can be from 2080 to 3048.

NOTE: The following applies only to Vista32 users:

Right click on command prompt from Start > All Programs > Accessories and select "Run as administrator". Enter this:

BCDEDIT /set increaseuserva 2560
-or-
BCDEDIT /set increaseuserva 3072

as desired. In other words, choose the size you wish to allocate.

WARNING!

It is possible to starve the operating system's slice of VAS to the point that your system will no longer boot!

If this happens, you must reboot the computer into "Safe Mode" (which bypasses the /3GB switch, and then edit your boot.ini (WinXP) or use bcdecit (Vista) to reduce the size of the application slice of the VAS.

This page has been seen 6,367 times.