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
A Second Opinion
To answer the question of the source, we took two other games that have been known to encounter problems with the 2GB barrier: S.T.A.L.K.E.R: Shadow of Chernobyl and Company of Heroes. Both of these games as we found out in part 1 are currently shipping as large address aware, making them ideal candidates for examining address space usage under heavy load.
For STALKER, we are measuring address space usage around the particularly hectic and graphics-heavy starting camp. Usage was measured right after STALKER finished loading a saved game at that location.
Once again we are seeing two patterns as with Supreme Commander: under XP it's consuming far less address space than under Vista, and the amount of space consumed under Vista is dependent on the amount of video memory. On our bulky 8800GTX the difference between XP and Vista is 600MB, now 30% of our total 2GB of default address space. While STALKER manages to stay under 2GB, we could easily see the game cracking that. As for the relationship between video memory and address space used, it's less pronounced here, switching out for the 7800GTX only shaves off about 100MB.
Switching back once again to real-time strategy games we have Company of Heroes. Here we're checking address space usage at the start of the single-player Cherbourg mission, which as one of the visually richest levels in the game has the greatest capacity for hitting the 2GB barrier and reportedly has been causing problems doing so.
If we were handing out prizes for the biggest difference in address space usage, Company of Heroes would take the cake. At 2.16GB with our 8800GTX on Vista versus 1.30GB on XP, the increase in address space usage is now over 40% of the default and had we not modified our memory allocations Company of Heroes would have crashed. We also see our clearest pattern here of a difference in address space usage based on video memory, under Vista the address space usage with our 7800GTX is some 430MB less.
57 Comments
View All Comments
EndPCNoise - Saturday, July 21, 2007 - link
On another note...Why does Microsoft state that 32-bit Vista Home Premium supports up to 16GB RAM if there still exists a 4GB limit on address space? -- This does not make sense.Ignore this part in the above post. It is a mistake. All 32-bit versions of Vista have the 4GB limit on address space, which would make sense.
The 64-bit Vista Home Premium has an address space limit of 16 GB.
saratoga - Thursday, July 19, 2007 - link
I doubt you'll see a "fix" since this really isn't a bug. Its just the limits of whats possible in a 32 bit system. The solution is going to be Vista 64.Regarding the difference in VM space, I'd assume this is DX10 at work. It doubtless requires more VM space (if not more memory), so I'd expect to see a big difference between Vista and XP.
Ryan Smith - Thursday, July 19, 2007 - link
Close, it's DX9Ex and the new WDDM at work. The Vista DX9 implementation has a few more "features" as a result of the WDDM.imaheadcase - Thursday, July 19, 2007 - link
They could easily test if it is a DX10 issue by testing CoH, it ha DX9 or DX10smitty3268 - Thursday, July 19, 2007 - link
Sort of. They'd actually still be testing the DX10 code in Vista, though, just running the old DX9 compatibility path through it. I'm not sure you can really conclude anything from that or not, although it would be an interesting test to see.mlau - Thursday, July 19, 2007 - link
Supcom probably brings the windows VM to it's knees, and since programmersare a lazy bunch (I know I am) and usually don't check for failed memory
allocations (and the error paths are almost NEVER exercised during testing),
supcom crashes. You can paper over this by adding a few more gigs of ram,
but it's no excuse for app stupidity.
smitty3268 - Thursday, July 19, 2007 - link
Actually, the whole point is that adding more RAM doesn't help. Due to the nature of 32-bit OS's, virtual memory is capped to 4GB and most OS's limit it to 2GB for user applications. This limit doesn't change whether you have 256MB of physical memory or 4GB. You're right about the testing, though - most programmers just assume that memory is unlimited and don't think about checking to make sure an allocation didn't fail.