A Messy Transition (Part 2): Windows XP, Vista, and the 2GB Barrier
by Ryan Smith on July 19, 2007 12:00 PM EST- Posted in
- Software
Final Thoughts
Among all of our tests, there are three identifiable patterns, all relating to some difference between Vista and XP. Those are:
- Vista is using more address space than XP in all situations
- The amount of address space used with Vista seems to be related to the amount of video memory on our video card
- XP on the other hand does not fluctuate at all, the address space usage is the same no matter what card we use.
We suspect that the issue is related to some combination of how Vista handles video cards, and Vista being more resource-hungry as a side effect of it being a heavier operating system in general. With the latter generally being unavoidable and unchangeable, we're left with trying to figure out what about the former is having the greatest impact.
One of the most notable features introduced in the Windows Display Driver Model(WDDM) for Vista was virtualized memory, which allows for Vista to use the normal computer memory hierarchy as part of a memory hierarchy for video memory. The reason we mention this is that tucked away in one of Microsoft's documents on WDDM is a note with the following: "Memory allocations are limited to the application address space primarily for security reasons. WDDM provides increased security by isolating applications and their resources from each other." Our suspicion is that this feature is causing video memory to eat up more of the application's address space than under XP, which would explain why the extra address space is being used, why it's variable with video memory, and why XP doesn't show something similar.
Unfortunately we have been unable to find any confirmation that this is the case. When presented with the some of our numbers, only NVIDIA would comment, cryptically saying that "Microsoft is aware of the issue and they are working on it. More details will be provided as they become available." Whether this means that the problem is what we're guessing or something entirely different is not something we can get an answer at this point.
As far as Windows Vista is concerned, all of this weighs heavily on a fledgling operating system that many people are waiting to get its first service pack before trying. While the performance problems we saw earlier this year with Vista have largely cleared up, now it seems there's a definite issue with address space usage in conjunction with applications that make heavy use of a video card (e.g. games). In turn, it's hard to understate the situation, since hitting the 2GB barrier typically results in crashing.
The situation isn't entirely unmanageable, but the number of questions left is uncomfortably larger than the number of answers provided so far. The problem can be solved by users in several ways we've outlined in part 1 of this series, but none of these solutions are truly satisfactory. The real solution is going to have to come from Microsoft, who thankfully is aware of the problem and we presume we'll be hearing about a solution from them sooner than later. In the mean time however serious gamers will want to take a critical look at Vista if they are currently using it or are thinking about switching to it. This isn't a severe problem with so few serious gamers currently on Vista, but it may be best to hold off on switching to Vista until Microsoft has the issue sorted out.
On a lighter note, not everything we've seen today is bad news. The address space usage on XP is significantly lighter than Vista, making the situation far less dire. Instead of having to resort to any of the solutions we outlined in part 1, the majority of XP users should be able to get away with not needing to take any action at all, at least for the next few months. The 2GB barrier still exists and still will be a problem, but ideally by the time the situation is as bad on XP as it is on Vista today, we'll have a solution to this address space issue from Microsoft, along with a clearer path on the migration to 64bit.
And getting back to Supreme Commander for a moment, our problems have not fallen on deaf ears over at developer Gas Powered Games. They let us know that the next version of Supreme Commander, Forged Alliance, will feature several engine improvements related to the issues we've covered. They are switching memory allocators to an in-house solution which is lighter and uses less memory, and are also attempting to put in a notification system for alerting users if the game has run out of address space to work with. Finally the game will be shipping as large address aware and will be tested as such. Hopefully we'll see other developers taking similar steps over the next year.
We'll have more on address space usage in Windows Vista as we find out more.
57 Comments
View All Comments
jay401 - Thursday, July 19, 2007 - link
It's good to have another link of solid proof for all those jokers out there who want to claim Vista is soooo much better for gaming. wtf ever.But back to the topic of SupCom: SupCom shouldn't crash without the hack. It shouldn't need a hack. It should work properly. Hopefully they rectify this in November, but having to pay for a second game (Forged Alliance) to get the first one to work on the epic scale they billed it as having, is rubbish.
titan7 - Thursday, July 19, 2007 - link
It works on the Epic scale if you play in XP though.jay401 - Friday, July 20, 2007 - link
only if you implement the hack fix and even then, no guarantees.thorphin - Thursday, July 19, 2007 - link
2 GB barrier. This is something us in the Windows systems programming world have had to deal with for sometime. The real solution as you know is to move to a 64-bit OS but there is one trick Microsoft has left in the 32-bit world.We can use the /3GB switch in the boot.ini on most Windows versions prior to Vista. On Vista you use the “IncreaseUserVA element in BCDEdit” in place of the /3GB switch. This raises the 2 GB application address limit to 3 GB.
But for the application to use this additional 1 GB of address space it must be compiled to use “IMAGE_FILE_LARGE_ADDRESS_AWARE in the process header” or linked wit the /LARGEADDRESSAWARE option.
If you want all the techie details check out
http://www.microsoft.com/whdc/system/platform/serv...">http://www.microsoft.com/whdc/system/platform/serv...
http://msdn2.microsoft.com/en-us/library/ms791558....">http://msdn2.microsoft.com/en-us/library/ms791558....
EndPCNoise - Friday, July 20, 2007 - link
But for the application to use this additional 1 GB of address space it must be compiled to use “IMAGE_FILE_LARGE_ADDRESS_AWARE in the process header” or linked wit the /LARGEADDRESSAWARE option.I don't think this is something the "average joe user" (in other words ME) can do. If I could do this, how?
thorphin - Tuesday, July 24, 2007 - link
This doesn't apply to you as the end user, it applies to the developers of the application (or game in this case).BUL - Friday, July 20, 2007 - link
Poor attempt, sport... The /3GB option is a band-aid the works in some cases and causes problems in others. The biggest issue with /3GB is drivers--even signed drivers may render XP useless--and remember, /3GB only applies to XP Pro, not XP Home. Generally speaking, writers of drivers for server OS's need to deal & test for this, but do you think your cheap Chinese-made camera's driver (written by the Guaw-Dong Industrial Conglomerate's programmer who also maintains their website) has an "industrial strength" driver? No...What this boils down to is a design flaw in Vista (apparently in its video driver model) and poor coding on the part of ATI/NVidia driver developers & the game developers. Personally, I don't care how complex a game is--if it offers settings that cannot exist in 2GB of address space, especially on XP, then the video game company & its developers are at fault. Now they'll actually have to develop tighter, cleaner code... Boo-hoo.
skroh - Thursday, July 19, 2007 - link
They explained all of those issues in detail in the first article, particularly the way in which the /3GB switch doesn't help with apps that are not large address aware. They also expected the offending apps to crash at the mere presence of the switch at least some times, but apparently this proved to be almost a non-issue. I don't know if they reproduced the stability tests with the /3GB switch under XP, but that might be useful info.thorphin - Tuesday, July 24, 2007 - link
Of course it doesn't work with apps that aren't large address aware. The burden is on the developers of the applications in question. They must either make them large address aware, port them to 64-bit, or write code that can execute in a smaller address space.Heck, they just do all the above to make them as versatile as possible.
customcoms - Thursday, July 19, 2007 - link
The issue is you then limit the os to 1gb of address space (since there is only 4gb total, period, no way to increase that limit w/o 64 bit environments)...which causes vista to crash...