Sign in to follow this  
PhilTaylor

DirectX fix for OOM 2GB limit - Working?

Recommended Posts

As Phil has blog'd in the few preceding posts here: http://blogs.msdn.com/ptaylor/archive/2007...ts.aspx#3313718 the, June-update of DirectX fixed the 2GB limitation which has plagued us with the OOM ceiling errors, even though many of us had more than 2GB of RAM. He refers to a "common FSX fix" to impletement the workaround and that if it is truely a valid workaround, ACES may fully support it in the near future.Does anyone know exactly which 2GB workaround Phil is refering to and whether or not the June DirectX update seems to have the OOM ceiling issue put to bed?

Share this post


Link to post
Share on other sites
Help AVSIM continue to serve you!
Please donate today!

I applied the /3 fix as outlined in the above link, and since then I have been able to run fsx with no blurries and with both processors. Prior to the fix, I was pegged at 100% and had to limit fsx to one processor. I never got the OOM, but it helped everything else.

Share this post


Link to post
Share on other sites

As someone asked in the linked topic, I also wonder if this /3G fix might help users with 2 Gb of ram, like I have. I get OOM after a while when I set LOD to high. Does it only work when you have MORE than 2 Gb physical ram or can you also add Window's virtual ram to it?

Share this post


Link to post
Share on other sites

The setting we are talking about controls virtual address space. Normal Win32 processes have 2G of address space, out of the 4G available. 2G is left to the OS for its needs,drivers, etc.The /3G switch makes applications able to address memory above the 2G line. How does it do this? Normal processes only use 31 bits of the 32 bit address, effectively limiting them to 2G ( 2 ^^ 31 ). Toggling this switch for the app lets it use some of the remaining address space. It needs to be used with care, since PCI-Express maps the entire address space of the graphics card into the OS address space. If you set the app to use 3G with a 768m graphics card, that leaves 256m for the OS. A better setting is 2560, eg 2.5G, since that leaves 768m for the OS with a 786m graphics card. Much more reasonable.So yes it can help you regardless of your actual physical RAM.In the "out of memory" case, 2 things can be happening:1)the app is running out of contiguous blocks in the 2G process address space2)the app is running out of virtual address space periodIn either case, having more virtual address space either eliminates case 2 or makes more room for more contiguous blocks and lets the app run longer before running out of contiguous blocks.

Share this post


Link to post
Share on other sites

Thanks for the explanation Phil.What about those of us running dual 8800 GTX 768m graphics cards? Still 2.5g? Thanks again,-Paul

Share this post


Link to post
Share on other sites

Phil,Thank you for joining our discussion about this topic. As usual, your knowledge on computer systems in general is remarkable. The reason this subject is near and dear to my heart, is the fact that I fought the dreaded OOM error in FS9 for six solid months, whereby many of us had lots of detailed add-ons running simultaniously. We were experiencing the CTD usually around the final-approach time of the flight. It is at that point which we began playing with the /3GB switch to aleviate the OOM error box.With FSX and Vista, the OOM seems as prevelant as ever, apperently for many of the same reasons. My next question is, if we are running Vista, wouldn't the superfetch service make tweaking the amount RAM to set aside more complicated, because it basically consumes all available RAM anyway?Thanks again for your insight...

Share this post


Link to post
Share on other sites

LOL, between the two of us I think we tried just about everything. The /3gb switch has always been so taboo no one really wanted to use it.Now Phil and I do mean this with the utmost respect. Isn't there a awy to set a parameter within FS 9 and X to tell them to stay within the 2g limit rather than tweaking the app and the O/S to allow it to exceed the 2g limit?Just a silly question ;)Thanks so much again Phil, Just do a search on my name and you will see why I am so interested. You can search here, PMDG, over at the UT forums, I researched this since the LVL-D 767 was originally introduced 3 years ago!!!All the best,-PaulPrimary RigLiquid CooledIntel C2D E6600 @3.2 gigsAsus P5N32SLI-Plus2 gigs Corsair XMS PC6400 4 4 4 12 @810Dual OC'd XFX 8800GTX @ 2 gigs24 inch Widescreen LCD 16XAA/16XAFDual 19 inch LCD'sRaid-0+1PCPower and Cooling 1k Quad SLIhttp://home.comcast.net/~psolk/3monitorsa.htmlBackup RigAMD 4000 San Diego @ 2.72 Gigs Kingston Corsair XMS CL2XFX 7900 GTX Raid-0psolk.jpg

Share this post


Link to post
Share on other sites

No, because the 2 are different in kind.Tweaking the OS and the app to enable >2G process address space gives the app more room to breath, if you will.Superfetch controls how the paging system fetches and caches pages. The app never sees what Superfetch does. If Superfetch works right, the app waits less to see a page request fulfilled. Superfetch does not reduce the available virtual address space, its merely a different caching system for pages and makes for a speedier virtual memory manager.Vista likely sees this problem more because it does enact a bit more overhead. The potential does exist on XP though, and the /3G tweak is supported on XP Pro.Note: I was slightly incorrect in my description of how the address bits are used to limit the app to 2G. Addresses below 0x80000000 are "user mode addresses". I made a blog post to wrap information about this up here:http://blogs.msdn.com/ptaylor/archive/2007...ress-space.aspx

Share this post


Link to post
Share on other sites

I dont know for sure, but it feels like some driver magic must be going on since 2G+1.5G leaves 512m for the OS if both graphics cards were fully mapped in. In that case, if both were fully mapped in, I believe setting USERVA to 2.5 would starve the kernel since it would leave no address space for the OS.

Share this post


Link to post
Share on other sites

Thanks Phil,This has largely been my problem. When I enable the /3gb switch what happens is the O/S seems to "take" what it needs from the drivers and they do not map all the space they need. Hence I am unable to see any AA/AF out of the drivers when the switch is enabled. The cards are being starved of their resources to make room for the O/S. It is something you and the team should explore. If this switch works it may only be applicable for those with lower amounts of mem in their vid. cards. So that leads back to the original question at hand. Can't the team flag the app to stay within the limits. Perhaps start dropping the farthest textures from the aircrafts position to allow more room etc... Thank you SO much again for participating.Incidentally, are you at the MS campus? I work for a Seattle based company that was just acquired this week so you may even know some of the folks over at Aventail... Seeing I don't know what is going on with the acquisition this is a perfect time to get FS right :)Cheers,-PaulPrimary RigLiquid CooledIntel C2D E6600 @3.2 gigsAsus P5N32SLI-Plus2 gigs Corsair XMS PC6400 4 4 4 12 @810Dual OC'd XFX 8800GTX @ 2 gigs24 inch Widescreen LCD 16XAA/16XAFDual 19 inch LCD'sRaid-0+1PCPower and Cooling 1k Quad SLIhttp://home.comcast.net/~psolk/3monitorsa.htmlBackup RigAMD 4000 San Diego @ 2.72 Gigs Kingston Corsair XMS CL2XFX 7900 GTX Raid-0psolk.jpg

Share this post


Link to post
Share on other sites

Please forgive my ignorance but I occasionally have the OOM error too. I have been able to reduce this error by stopping all the unnecessary applications running under Vista. Unfortunately every now and then it will appear again which in turn makes me simply stop playing for a while because it is frustrating.It seems a little complicated and scary for me to follow all this; download this, open this, change this in the OS, add this line to the main EXEC and BE CAREFULL not to do this thing and long explanations on how the system works.After acknowledging these errors, is the ACE team making a patch to address some of these problems?No offense for those who like to, or make it their hobby tweaking and adding things to FSX, but some people, at least me, would like to just play the game without it crashing. Downloading an occasional patch to fix things is more comfortable for none computer engineer.

Share this post


Link to post
Share on other sites

>Normal Win32 processes have 2G of address space, out of the 4G>available. 2G is left to the OS for its needs,drivers, etc.>>The /3G switch makes applications able to address memory above>the 2G line. How does it do this? Normal processes only use 31>bits of the 32 bit address, effectively limiting them to 2G (>2 ^^ 31 ). Toggling this switch for the app lets it use some>of the remaining address space. It needs to be used with care,>since PCI-Express maps the entire address space of the>graphics card into the OS address space. If you set the app to>use 3G with a 768m graphics card, that leaves 256m for the OS.>A better setting is 2560, eg 2.5G, since that leaves 768m for>the OS with a 786m graphics card. Much more reasonable.>Don't forget for us AGP users we also have to include our AGP aperture into that address space on top of our video cards memory.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this