1

I've come across a suggestion for custom-enabling "Large Address Aware" ability for game executables, which as far as I understand, essentially allows 32-bit games to access 64-bit memory space.

http://www.techpowerup.com/forums/threads/large-address-aware.112556/

http://www.pso-world.com/forums/showthread.php?t=199993

Would this suggestion actually benefit game performance, like for Starcraft 2, for example? Is there a way to determine beforehand which games this may or may not help?

Bonus:

And is there risk in doing this for games that multiplay online, as far as possibly getting banned for "cheating"?

0

2 Answers 2

1

To quickly test whether an application is stable when enabling LAA you'd need to have windows allocated memory in reverse to see if the application can handle large memory addresses (int values above 31 bits). The change is done via regedit iirc, but I don't remember the key/value. EDIT: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management"AllocationPreference" -- has to be set to top-down allocation so it allocates high addresses first.

Anyways... If the game (probably written in C++) was coded optimally, it won't actually make a difference if you enable LAA in the exe because the programmer(s) would have directly allocated ram into buffers that have a static size at compile time which would be sufficient for all needs. For there to be a benefit of actually having more useable ram with the LAA flag IN AN APPLICATION NOT DESIGNED TO USE LAA, the programmer would've had to have screwed up in their assumptions regarding heap RAM usage and allocation. Or they did something weird that I can't imagine. it's not like Java that has automated heap allocation, and this won't affect memory allocation done on the stack unless they programmers do something very strange.

1
  • 1
    Good, exhaustive answer! Might I ask what operating system are you using? I tried looking up the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management key in my registry and didn't have the AllocationPreference value present by default. Is it perhaps specific to older OSes (I'm running the latest Win 10 Pro build)? Or does the value need to be manually added? Also if you're suggesting editing registry, it'd be good to add a recommendation for users with steps/link to a guide on how to export (and therefore back up) registry before modifying it. Apr 19, 2021 at 12:49
1

Generally speaking, this will not improve the performance of most video games. Large Address Aware (LAA) is only useful in increasing the maximum limit of memory usage by a given application.

Generally speaking, a 32-bit application can use up to 2GB of memory. Most games won't run into this issue, and the ones that do are either already compiled as Large Address Aware (such as Skyrim) or have a 64-bit release.

Large Address Aware is only going to allow games to use more memory. So unless a game is running up to that limit, failing to allocate memory, then crashing, enabling LAA isn't going to help anything.

And is there risk in doing this for games that multiplay online, as far as possibly getting banned for "cheating"?

Well since you specifically mention Starcraft 2, let's look at a blue (official) post directly from Blizzard:

First off, we will not action accounts that are "caught" using a Large Address Aware modified executable.

LAA is only a flag in the executable. It is possible for an anti-cheat program to detect this as a change in the executable, however most anti-cheat software shouldn't mind. If you're concerned with it, I would advise you ask whoever makes the anti-cheat software before making any changes.

5
  • 1
    Even 64-bit Windows won't allocate more than 2GB memory to a 32-bit process if it is not Large Address Aware - not all applications can work correctly if it is enabled, so it is kept off by default. If the program doesn't use any assumptions about pointer addresses, though, it is perfectly safe to enable it (and 32-bit applications only see a change if Windows has been configured to do so.) Jul 10, 2014 at 22:56
  • Ah good catch. Most 32-bit software that I use is already LAA-enabled (like Skyrim which generally runs 2-2.5GB on my system).
    – user66184
    Jul 10, 2014 at 23:06
  • @MichaelMadsen -- awesome, thanks to you both. Besides seeing a game using >2GB memory, how can you tell whether a game is LAA-enabled or not? Jul 13, 2014 at 2:05
  • And a minor sub-question -- if you were to "forcibly" enable LAA on a game's executable, and then while playing, you found that the game was suddenly using >2GB memory, would that mean that LAA is benefiting the game in some way (even if just by extra in-memory/off-disk caching)? Jul 13, 2014 at 2:10
  • 1
    @Coldblackice: The easiest way to see if it's enabled is to use the utility from the TechPowerup thread you linked, which can also toggle it. And yes, if the game goes >2GB (and doesn't misbehave otherwise), then it is benefitting from the flag (also, you would expect a crash in that situation if the flag wasn't enabled). Jul 13, 2014 at 11:12

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .