Oblivion w/ LAA

Post » Mon May 02, 2011 11:48 pm

The previous topic just got locked, so here it is again:

The LAA enablers on tesnexus are reported to cause problems with OBSE. This one (suggested by showler in the other thread) is reported to work fine with OBSE: http://www.ntcore.com/4gb_patch.php

LAA stands for Large Address Aware.

Why enable LAA?

32 bit programs, including Oblivion, can normally only use 2 GB of address space.

If you set the LAA flag in a program, then the program can use more than 2 GB of address space if more is available. On 64 bit windows, 4 GBs of address space are available per process. On 32 bit windows, normally only 2 GBs of address space is available per process, though the /3GB switch can increase that to 3 GB. However, the /3 GB switch is generally not recommended.

A few programs may have trouble (ie crash) if they are given more than 2 GB of address space, but Oblivion is not one of those. However, Oblivion doesn't have much use for that much memory unless it's very heavily modded.

If you're specifically on 64 bit XP, then there is an extra complication:
Oblivions heap goes in to a sort of alternate mode after about 200 MB of heap allocations. This mode is REALLY slow on XP. You're likely to exceed this limit long before Oblivion could start benefiting from LAA. If you use OSR and have heap replacement enabled in the OSR ini file then that limit is increased to 450 MB by default, and can be increase further by ini file changes.

Here's the decision tree for heap memory considerations:
Is your Oblivion heavily modded?
___no: You might be fine.
___yes: Are you using windows XP?
______no: Is your Oblivion really REALLY heavily modded?
_________no: You might be fine.
_________yes: Are you using 64 bit windows?
____________no: You might have trouble.
____________yes: Consider using an LAA enabler.
______yes: Use OSR w/ heap replacement enabled. Is your Oblivion really REALLY heavily modded?
_________no: You might be fine.
_________yes: Are you using 64 bit windows?
____________no: You might have trouble.
____________yes: Consider using an LAA enabler. If you do so, try changing increasing Heap\iHeapSize from 450 to (making up a number) 700 in the OSR ini file. The change is unnecessary (but doesn't hurt) for some settings of iHeapAlgorithm.

There may also be some issues with non-heap stuff that uses address space, but I don't know anything about that.

I personally do not use an LAA enabler for Oblivion. I don't use enough mods to benefit from it.
User avatar
Tamara Primo
 
Posts: 3483
Joined: Fri Jul 28, 2006 7:15 am

Post » Tue May 03, 2011 3:06 am

What's the difference between Windows XP and Windows Vista/7 that makes that distinction important? I'm running a 64-bit copy of Windows 7. Is an LAA enabler and increased iHeapSize going to help me at all? I do play with quite a few mods.
User avatar
Marilú
 
Posts: 3449
Joined: Sat Oct 07, 2006 7:17 am

Post » Mon May 02, 2011 11:12 pm

The particular issue with XP is that the native XP heap is really really really bad for the sort of allocation patterns that Oblivion produces. This isn't relevant normally because Oblivion uses it's own internal algorithm for the first 200 or so MB of allocations. However, in heavily modded games on XP, Oblivion overflows its internal heap and starts using the regular one, and grinds to a halt. OSR heap replacement fixes this.

If you use a VERY heavily modded Oblivion then you might not merely overflow that 200 MB limit, but also overflow the 2 GBs of address space limit (which ends up leaving about 500 MB an unknown amount of address space for heap allocations). In that case, you need LAA. However, if you need LAA and you use XP, then you need to further tweak OSRs settings, because past 450 MB OSR will tend to start spilling things to the windows heap similar to what vanilla Oblivion does at 200 MB. On XP you never want Oblivion to talk directly to the windows heap in any way shape or form.

On non-XP, the issues that may require LAA remain the same, but the 200 MB limit of vanilla Oblivions heap doesn't matter much because falling back on the windows heap is not a disaster. OSR heap replacement is still a decent idea though, since OSR provided heaps are faster than Oblivions heap even under normal circumstances.
User avatar
A Dardzz
 
Posts: 3370
Joined: Sat Jan 27, 2007 6:26 pm

Post » Mon May 02, 2011 10:00 pm

Thanks for starting a new thread SkyRanger-1. I'll be trying out some of your suggestions. I think I understand everything now in regards to LLA as far as what you've explained.
User avatar
Georgia Fullalove
 
Posts: 3390
Joined: Mon Nov 06, 2006 11:48 pm

Post » Tue May 03, 2011 1:04 am

Exactly how many mods is considered "heavily modded" enough to warrant using LAA?

Also, definitely avoid /3GB on a 32bit XP. When I did that, even Oblivion hated it and promptly crashed. The resulting fallout left the OS in an extremely unstable state which terminated in a BSOD a few minutes later. It actually took going into safe mode to undo the change because the system stayed unstable even after rebooting. Definitely recommend using it ONLY on a 64bit OS.
User avatar
Makenna Nomad
 
Posts: 3391
Joined: Tue Aug 29, 2006 10:05 pm

Post » Tue May 03, 2011 1:37 am

Surely it's a stupid amount of mods? I remember stress testing my system when I first got it with FCOM, new npcs, QTP3R, LOD textures, better vegetation, and RAEVWD, and while I would go over my vram in places, Oblivion never used more than 1.4 gigs of ram.
User avatar
Farrah Lee
 
Posts: 3488
Joined: Fri Aug 17, 2007 10:32 pm

Post » Tue May 03, 2011 1:14 am

The definition of "heavily modded" isn't entirely clear. I think OOO alone is enough to exceed the vanilla 200 MB heap in longer game sessions. I think OOO+MMM will easily exceed the 200 MB limit even in short game sessions, but is generally not enough to require LAA in my experience. I don't know what would require LAA... the few users I've talked to who were overflowing what you can fit in a non-LAA game clearly had some kind of problem where Oblivion was continually and rapidly using more and more memory the longer they played. My guess is that Oblivion.ini settings play a big role, and cell buffer purging may help significantly. I'm not sure what type of mods hurt more or less.

If you are using OSR and have heap replacement enabled and are using iHeapAlgorithm 5 or 3 then you can see some relevant information in the log file:
On iHeapAlgorithm 5, you will see a message "ThreadHeap2 - exhausted all blocks" if you overflow the limit set by iHeapSize. At the default iHeapSize of 450 MB, this means you are coming close to requiring LAA (if you actually required LAA, you would CTD).
If you turn on Heap\bEnableMessages then iHeapAlgorithm 5 will give you more detailed messages of the form "65536 byte block #4751 allocated to pool for size 3". You can ignore the "pool for size 3" part, and just concentrate on the first 4 words of that message: 4751 * 64KB = 296.9 MB, which is well below the value of iHeapSize, so it's not a problem. If you got a message "65536 byte block #6789 allocated to pool for size 3", that would be getting a little dangerous (6789 * 64KB = 424.3 MB), almost up to iHeapSize (450 MB).
iHeapAlgorithm 3 can give similar information, though the messages are a little different.
User avatar
Trey Johnson
 
Posts: 3295
Joined: Thu Oct 11, 2007 7:00 pm

Post » Tue May 03, 2011 9:48 am

thead 01E4 assigned PT 02C52230, serial# 1
Critical Sections mode 2 (improve fairness):
MemoryHeap Optimization Mode 5: attempting to completely replace the Oblivion heap manager with my ThreadHeap2
dynamic-size hashtables
hook mode 1: using main GetTickCount call
Heap Initialization (268435456, 0)
CS 0x00B32B80 (caller 0x9D7E7A, path 0, spin500), by-object, set to mode 3
CS 0x036C3608 (caller 0x701748, path 0, spin500), by-caller, set to mode 5
thead 0464 assigned PT 02CF4FD8, serial# 2
initialize2() running in thread 464, renderer at 036C3488
thead 0408 assigned PT 52C6C588, serial# 3
thead 0440 assigned PT 51EF53A0, serial# 4


here is what currently shows in my OSR log file.
Not seeing many relevant lines of info comparing to your last post.
Maybe I don't have something properly set in my OSR.ini?
I would like to be able to determine my heap size and if it is in danger of reaching an unstable state in the way you explained it in the post above.


nevermind, forgot to turn on benablemessages =1

I'm using iheapalgorithm 5 and getting this message "65536 byte block #5345 allocated to pool for size 6"
For now, it looks like I'm safe and wouldn't require the use of the LLA mod for my obse_loader.exe
This is all really great info! I will be keeping an eye on this log file as I expand my load order.

Thanks for the wonderful tips!
User avatar
Leticia Hernandez
 
Posts: 3426
Joined: Tue Oct 23, 2007 9:46 am

Post » Mon May 02, 2011 7:33 pm

Also, definitely avoid /3GB on a 32bit XP. When I did that, even Oblivion hated it and promptly crashed. The resulting fallout left the OS in an extremely unstable state which terminated in a BSOD a few minutes later. It actually took going into safe mode to undo the change because the system stayed unstable even after rebooting. Definitely recommend using it ONLY on a 64bit OS.

I running WinXP x86 with 4GB RAM and turning on the 3GB Switch seemed to give me much more stability. Well STALKER doesn't crash anymore atleast.
User avatar
cheryl wright
 
Posts: 3382
Joined: Sat Nov 25, 2006 4:43 am

Post » Tue May 03, 2011 1:43 am

I've heard the instability associated with /3GB is caused by some drivers not getting along well with that option. I'm currently running with /3GB (for non-game-related reasons), but planning to switch back shortly.

edit: Disabling /3GB helped my stability. Not so much in Oblivion, but in other games. I'm using an NVidia 9600GT. So, it seems fairly clear that the /3GB switch is a bad idea for gaming, though perhaps not necessarily for any single particular game.
User avatar
Lily Something
 
Posts: 3327
Joined: Thu Jun 15, 2006 12:21 pm

Post » Mon May 02, 2011 8:31 pm

Thanks. Going to give this a try (Windows 7 64bit).
User avatar
Multi Multi
 
Posts: 3382
Joined: Mon Sep 18, 2006 4:07 pm

Post » Tue May 03, 2011 6:31 am

Suddenly, I am uncertain. I said "2 GBs of address space limit (which ends up leaving about 500 MB for heap allocations)". But I cannot recall where the 500 MB part came from. I am not at all certain now that the 500 MB part is accurate.

Still, the "about 200 MB" to Oblivions vanilla heap is accurate, as is the 450 MB default size of OSRs heap modes 5 & 3. The 500 number though I cannot recall a source for, nor confirm by testing. ATM my Oblivion actually has room for 1 GB of heap during startup, though that's not counting anything it may require for large memory allocations once the game has started. So... I don't know.
User avatar
Franko AlVarado
 
Posts: 3473
Joined: Sun Nov 18, 2007 7:49 pm

Post » Mon May 02, 2011 11:57 pm

Suddenly, I am uncertain. I said "2 GBs of address space limit (which ends up leaving about 500 MB for heap allocations)". But I cannot recall where the 500 MB part came from. I am not at all certain now that the 500 MB part is accurate.

Still, the "about 200 MB" to Oblivions vanilla heap is accurate, as is the 450 MB default size of OSRs heap modes 5 & 3. The 500 number though I cannot recall a source for, nor confirm by testing. ATM my Oblivion actually has room for 1 GB of heap during startup, though that's not counting anything it may require for large memory allocations once the game has started. So... I don't know.


Since I'm planning on hitting the 255 mod load limit anyway, would you say it's safe to just go ahead and change the heap size to something larger (say 700 - 1024mb) Is there a risk of instability by changing this value if Oblivion has no need for such a large heap size?
User avatar
sarah taylor
 
Posts: 3490
Joined: Thu Nov 16, 2006 3:36 pm

Post » Tue May 03, 2011 3:22 am

No program should ever use more than 2gb of ram at once, I don't care if it can use it or not that is just retardedly excessive.
User avatar
Amanda Furtado
 
Posts: 3454
Joined: Fri Dec 15, 2006 4:22 pm

Post » Tue May 03, 2011 1:41 am

Since I'm planning on hitting the 255 mod load limit anyway, would you say it's safe to just go ahead and change the heap size to something larger (say 700 - 1024mb) Is there a risk of instability by changing this value if Oblivion has no need for such a large heap size?
Setting the heap size to a large value reserves that amount of address space for small heap allocations, which are not the only things that Oblivion needs address space for dynamically. Some should be left over for other things. I don't really know how much, I suppose I ought to try to measure it sometime. If you use LAA there's no real downside to increasing the heap size since there's lots of extra address space. If you don't use LAA... you can increase the heap size, but I wouldn't recommend doing so unless you're on XP, and even then it might be worthwhile to double-check that you really need more... running out of heap space on XP slows Oblivion down dramatically, but running out of address space can CTD, which is harder to figure out the cause.

No program should ever use more than 2gb of ram at once, I don't care if it can use it or not that is just retardedly excessive.
I think you mean 640 KB.
User avatar
Miragel Ginza
 
Posts: 3502
Joined: Thu Dec 21, 2006 6:19 am

Post » Tue May 03, 2011 4:47 am

I think you mean 640 KB.


Back in the day I had 64k (not all of which was addressable). And to suplement my tape drive and floppy disk drive that I could get to play music by manipulating it's brains with assembler code and abuse it's mechanism, I also had a massive 8 meg hard drive that sounded like a jet engine winding up. Every program that existed for it fit on that 8 meg drive. And it ran a BBS too and held the entire forum. It was the awesome. Except for the jet plane part.

And now back to our regularly scheduled program...
User avatar
Alexis Estrada
 
Posts: 3507
Joined: Tue Aug 29, 2006 6:22 pm

Post » Mon May 02, 2011 9:33 pm

No program should ever use more than 2gb of ram at once, I don't care if it can use it or not that is just retardedly excessive.


I guess you're not going to like the games of the future then. With more and more people switching to 64bit, the amount of memory that games use up won't be limited anymore. Developers will be able to put as much as they want into them and you're no doubt going to see alot that exceed 2 gigs. It's not as uncommon as you might think for some games to start reaching that limit.
User avatar
Ross
 
Posts: 3384
Joined: Thu Aug 10, 2006 7:22 pm

Post » Tue May 03, 2011 6:35 am

I have no problem with the future, but as of today I still see it as a lot for a single program to take. Generally the ones that do are poorly programed/optimized (which oblivion is) I only have 2gigs in my machine, so it would be all used up :D
User avatar
Lizs
 
Posts: 3497
Joined: Mon Jul 17, 2006 11:45 pm

Post » Tue May 03, 2011 12:05 am

[s]here is what currently shows in my OSR log file.
...clip...
For now, it looks like I'm safe and wouldn't require the use of the LLA mod for my obse_loader.exe
This is all really great info! I will be keeping an eye on this log file as I expand my load order.
...clip...

LAA should NOT BE ENABLED ON obse_loader.exe, only Oblivion.exe.
User avatar
Davorah Katz
 
Posts: 3468
Joined: Fri Dec 22, 2006 12:57 pm

Post » Tue May 03, 2011 4:36 am

LAA should NOT BE ENABLED ON obse_loader.exe, only Oblivion.exe.

This is correct. Frankly on W7 64 it, there is no reason not to enable LAA. My game is very heavily modded (including texture replacers) and is very stable (considering it is Oblivion that we are talking about).
User avatar
Nuno Castro
 
Posts: 3414
Joined: Sat Oct 13, 2007 1:40 am

Post » Tue May 03, 2011 5:04 am

LAA should NOT BE ENABLED ON obse_loader.exe, only Oblivion.exe.

Having been one of the first to really dig into the effects of LAA with Oblivion, I can say that it is safe to use the suggested LAA patch in OP of this thread on obse_loader.exe. SR-1 clearly states that the linked LAA patch in the OP is known to be compatible with obse.
I am currently running LAA on my obse_loader.exe and noticed more stability in fact. Haven't had a CTD since I did this.


This is correct. Frankly on W7 64 it, there is no reason not to enable LAA. My game is very heavily modded (including texture replacers) and is very stable (considering it is Oblivion that we are talking about).

I would be interested to see your load order. Be honest... what is the longest you've played Oblivion without a CTD not using LAA?
User avatar
George PUluse
 
Posts: 3486
Joined: Fri Sep 28, 2007 11:20 pm

Post » Tue May 03, 2011 11:21 am

Using LAA on the obse_loader.exe file shouldn't be necessary, but it won't hurt anything if you do.
User avatar
Sanctum
 
Posts: 3524
Joined: Sun Aug 20, 2006 8:29 am

Post » Tue May 03, 2011 8:22 am

Using LAA on the obse_loader.exe file shouldn't be necessary, but it won't hurt anything if you do.


Yeah, I know we've discussed all of this before. I was a firm believer in obse not needing the LAA patch. and I remember Camaro was insistent that LAA didn't work until he added the patch to obse_loader.exe.
Before, I would only use it on Oblivion.exe. That alone typically produced great results. But this last go around with installing Oblivion, it just didn't seem to be doing the trick. I do have a larger load order though, so that is something to consider. About 200 mods currently. But with so many changes... (OSR updates, OBSE updates etc...) who's to say that adding it to obse_loader.exe wouldn't improve stability. Would be good to get some obse creator's opinion.

I patched the following with LAA and something dramatically changed for me stability wise.

Oblivion.exe
OblivionLauncher.exe
OBMMLauncher.exe
obse_loader.exe

I should try narrowing down which .exe file made the difference though. I was frustrated with some CTDs I kept getting and went crazy patching all of them. :shrug: I just know that using it on the Oblivion.exe alone wasn't doing anything this time around.
User avatar
Nymph
 
Posts: 3487
Joined: Thu Sep 21, 2006 1:17 pm

Post » Tue May 03, 2011 6:00 am

Well of those, the obse_loader.exe file is the only one that would make sense. You're not using the other two to load the game, are you? Would it even matter if OBMM had the LAA flag?
User avatar
Epul Kedah
 
Posts: 3545
Joined: Tue Oct 09, 2007 3:35 am

Post » Tue May 03, 2011 5:49 am

Well of those, the obse_loader.exe file is the only one that would make sense. You're not using the other two to load the game, are you? Would it even matter if OBMM had the LAA flag?


Don't know... I suppose I could use my backup executables of each and attempt to narrow down where the additional stability kicked in. The only other thing I recently added for stability was Game Booster v2.2. Which, btw has made my exiting of Oblivion SUPER fast. I mean, fast exit 2 already did a spectacular job, but with GB... OMG it's lightning fast on exit now! Game Booster will be one more thing I will try to look at as a variable. I haven't looked at GBs changes in depth, but some process/service it's ending for Windows7 is making a HUGE difference when exiting the game.
User avatar
Christie Mitchell
 
Posts: 3389
Joined: Mon Nov 27, 2006 10:44 pm

Next

Return to IV - Oblivion