OOM Error

From FSDeveloper Wiki
Jump to: navigation, search


Overview

Virtual Memory is a technique of simulating additional memory for an application to use.

Application programs and many system processes always reference memory using virtual memory addresses which are automatically translated to real (RAM) addresses by the hardware.

Virtual memory divides the virtual address space of an application program into pages; a page is a block of contiguous virtual memory addresses.

The virtual memory management component of the operating system maintains the translation tables used by the hardware to provide the mapping of virtual addresses into real addresses.

OOM Error

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 physically 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...


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 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:


In your boot.ini file, if you have added the /3GB switch already:

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

To "fine tune" the actual amount of VAS allocated, you need only add another switch to the end of the entire entry:

/Userva=2560

or whatever size you wish, keeping in mind the 1MB contiguous limit of FSX. In such a case, using any number that isn't a multiple of 512MB simply doesn't make much sense...

NOTE: The following applies only to Vista32 users:


BCDEDIT /set increaseuserva 2560
BCDEDIT /set increaseuserva 3072

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.