Profundido's performance guide for AOC
View Single Post
17th May 2008, 18:07
Since it's so popular, here's my complete roundup to managing user-mode memory on 32-bit Operating systems with 4GB physical memory:
Intro: What is this all about ?
a 32-bit OS such as Vista or XP has a few limits when it comes to memory use. To sum them up they are:
1.The Operating itself can only "see" 4GB minus the amount of reserved memory space by the Bios (because the bios is a layer that stands between the hardware and the operating system itself) The larger the memory on your video card for example, the less memory is left for your OS. This why one person sees only 2.8GB in windows and another sees 3.5GB while they both have 4GB of physical memory installed. Regardless of which edition of an OS you have, ALL 32-bit XP and Vista are subject to this rule.
2. 32-bit XP and Vista are designed in such a way that they need a part of the total addressable (= amount of memory that the OS can "see") for themselves. For this reason, Microsoft designed both XP and Vista in such a way that a certain process could only get up to 2GB of memory, and then the remaining memory would remain available for kernel processes (= itself), even though it does not in fact always need a full 2GB. In fact a clean XP might only need 300MB at some point if only 1 game is running and nothing else installed. Vista will require more kernel memory because it's bigger by design. As more stuff runs, the OS itself might need up to 1.5-2GB of memory for it's kernel. By default the balance in 32-bit XP and Vista is such that it's 2GB for a given user-mode process (= a program = Age of Conan) and 2GB for the kernel (= OS itself) If the virtual size of a process such as Age of conan reaches a total size of 2GB, the program is terminated by the OS BY DESIGN to prevent it from infiltrating the kernel reserved memory space. The user experiences this as a program crash straight into windows. For age of conan, my tests have shown that it's virtual size reaches 2GB at about when the physical memory usage size reaches around 1.5GB (this is what you see in windows task manager). This is why people keep crashing all the time without understanding why. Well, at least until now...
3. 32-bit Processes (=programs) themselves have a built-in little extra mini switch that's called a 'flag' that prevents them from groing bigger than 2GB. Even if you configure the OS using the above to allow up to 3GB for a process, it would not be able to do so if it's built-in switch is set to "not Large Address Aware" because that settings limits the process to a max of 2GB memory. If it's set to "Large Address Aware" however the 32-bit process is allowed to grow up to 3GB on a 32-bit OS or up to 4GB on a 64-bit OS, which is again the maximum for ANY 32-bit process.
Now there is a switch that makes it possible to shift the balance a bit from 2GB/2GB (program/kernel) to 3GB/1GB. This switch allows us to change the max mem limit for user-mode process so that Age of Conan can continue to grow in virtual size up to 3GB instead of only 2GB and that equals a physical memory usage of at least 2.2GB. The game will crash again when it reaches that new limit. My testing has shown that if you zone enough and roam about, the game wil go beyond 3GB physical usage and 3.5GB virtual size as of now. For this reason you can still crash. However, further testing has shown that the game reaches 1.5 physical usage in the first hour easily when zoning around Tortage (quite easy to simulate) while reaching the 2.2physical usage takes at the very least lots of zoning and usually a few hours to reach. For this reason the following switch (ONLY IF YOU HAVE 4GB MEM) may solve alot of problems for you
Great news! So how do I set the switch ??
Under Vista 32-bit:
1. Under Vista 32-bit (with at least 4GB memory installed regardless how much you see of it in windows) go START
2. Navigate to programs...etc until you see a black icon named "command prompt"
3. rightclick it and select: run as administrator. A big black box appears
4. In the big black box, type the following command: BCDEDIT /Set IncreaseUserVa 3072
5. Press enter to execute the command
6. reboot your computer
7(optional). If you don't like it for some reason you can revert the switch the same procedure but replace step 4 with this: entering bcdedit /deletevalue increaseuserva (this undoes the switch)
Under XP 32-bit:
the equivalent of that switch on Vista for xp is simply by modifying the boot.ini file (it's a hidden system file under c:\) and add the /3GB switch to the line that looks like this:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Micro soft Windows XP Pro"
so it becomes:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Micro soft Windows XP Pro" /3GB
then reboot to activate the change
to remove the switch under XP: remove the /3GB and reboot
Is there a catch ? Any danger to this switch ?
Yes, there is. You limit the available memory to the OS itself. If the OS tries to use more, windows will crash and you will have to reboot and start your programs up again. Is this most likely to happen ? Nope, generally it's not. But it can whenever the OS requires alot of memory, more than is available. Let's say someone has 4GB installed, but he uses 2*8800GTX (the type with 768MB per card) so his OS only "sees" 2.8GB. On top of that his computer is not cleanly/newly formatted. It's filled with tons of previously installed programs, antivirus and whatever else that uses memory. Then on top of that he's playing AOC with the switch so it's using over 2GB of memory...you can see where this is going and you know how to avoid it...
note: in this regard and considering the fact that SLI currently is not working in AOC anyway : on computers with ony 3-4GB of memory, AOC can in fact run better with only 1 video card for now since then you have more memory available to windows
enable this switch ONLY if the following conditions are BOTH true (if you still wonder why you haven't read the above):
1. you have Windows XP32-bit or Vista 32-bit (any edition)
2. you have at least 4GB of physical memory (even if your OS only sees 3.2)
if the answer to any of the above conditions is NO, then do NOT enable this switch or it may work contrary to your goals.
Note: On a 64 bit OS such as e.g Vista x64, this switch is not needed at all. The OS allows by default for any process to take up to it's maximum of memory available by design. Vista is able to "see" technically up to 128GB. Microsoft however decided to set a limit for each edition. so let's have another look at what restrictions we have for Vista x64 since that seems to be a popular question now:
1. Restriction by edition: Vista Home basic supports max 8GB, Vista Home Premium max 16GB, Business-Enterprise-Ultimate all support 128GB
2. Restriction by process: Since 64bit OS's can run both native 64bit designed process as well as 32-bit processes, there is still the max limit for a 32-bit process which is 4GB inevitably while a 64-bit process process could take up pretty much all memory. So if Ageofconan.exe is a 32-bit process and you are running Vista 64-bit with 8GB of physical ram (installed in the computer), then the OS will see all 8GB of ram while AgeofConan will crash if it reaches 4GB in virtual size but it will be able to use all 4GB since the OS still has enough memory left for itself so we dont' have the crappy situation from XP or Vista 32-bit. If Funcom would make a 64-bit version of the executable then it could grow even beyond 4GB up to..around 7-7.5 (assuming you have 8 onboard) ?? Something like that
Note: since the introduction of 32-bit Vista, many people have complained to Microsoft about the fact that windows shows that they can actually only see 2.8-3.5GB of memory while having 4GB memory installed that starting with SP1, enough people in fact for Microsoft to decide to change the decription under "System" in windows control panel. Yes you are reading this right: after installing SP1 for Vista on your 32-bit Vista you will see 4GB instead of the lesser number, although lesser is still being used even though the system information will indicate otherwise. The phylosophy behind this is that the system information should reflect how much memory is installed in your computer, not how much is effectively available to windows or used by windows so be careful there. Important to remember is the fact that you STILL only have 2.8-3.5 available for windows when doing your math for memory hungry programs such as this game... again, with 6GB or more and Vista 64-bit SP1 all those troubles are nonexistant and that's the near future of gaming imho !
Why is this ?
Setting the switch shifts the memory limit from the AOC client to the OS itself on (32-bit OS only). So: before april 14 your AOC client was the main source of crashing and your OS less since the client wanted to grow up to 3.1GB physical memory usage. By setting the /3GB switch you let the AOC client grow bigger at the cost of limiting the OS itself to 1GB which may make it crash as well. After april 14 the client only grows up to 2.1 so if you remove the /3GB switch you revert back to the default 2GB/2GB balanced limit (2GB for AOC, 2GB for the OS) so the OS is safe from any crashing now. Hence since AOC is no longer the main source of crashing we can conclude that the remaining crashes (coming from not enough free memory for the OS) may be removed by reverting back to the default settings. Hope this explains alot for people
Plz RATE this thread and give comments or requests to sticky this if you like it. Thx
Last edited by profundido; 17th May 2008 at
View Public Profile
Send a private message to profundido
Find More Posts by profundido