
Original Link: https://www.anandtech.com/show/2281
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
Shortly after publishing A Messy Transition (Part 1) we received numerous requests for similar user address space usage testing under Windows XP, as we had previously done all of our testing on our standard Windows Vista setup. Although we were not expecting a great difference - certainly Vista will use more resources than XP because it's a newer and heavier operating system - we decided to follow these requests anyhow. However what we found completely blew our expectations.
And with that said we'll immediately dive in to the results of our findings. We'll be picking up from where we left off, so please read part 1 if you haven't already.
Software Test Bed | |
Processor | AMD Athlon 64 4600+ (2x2.4GHz/512KB Cache, S939) |
RAM | OCZ EL Platinum DDR-400 (4x512MB) |
Motherboard | ASUS A8N-SLI Premium (nForce 4 SLI) |
System Platform Drivers | NV 15.00 |
Hard Drive | Maxtor MaXLine Pro 500GB SATA |
Video Cards | 1 x GeForce 8800GTX |
Video Drivers | NV ForceWare 163.11(Vista) NV ForceWare 162.18(XP) ATI Catalyst 7.6 |
Power Supply | OCZ GameXStream 700W |
Desktop Resolution | 1600x1200 |
Operating System | Windows Vista Ultimate 32-Bit Windows XP Professional SP2 |
. |
The principles of address space allocation and usage are virtually the same between Vista and XP, so as with our Vista tests we first attempted to crash Supreme Commander against a modified 2.6GB of user address space. Because this needed to be repeatable we have switched to using replays instead of a live game, but the goal remains the same one of monitoring memory usage and looking for Supreme Commander to crash. Or surprisingly, to not crash; we were unable to make Supreme Commander crash and not for a lack of trying.
Supreme Commander Address Space Usage (GeForce 8800GTX, 768MB) |
|||
Game Start | Replay Start | Replay End | |
Windows Vista | 562MB | 1.21GB | 1.95GB |
Windows XP | 116MB | 930MB | 1.44GB |
. |
The above is a chart of the user address space usage of Supreme Commander when the application was launched, at the start of the replay, and 15 minutes in to that replay. Although using a replay reduced overall address space usage (which is why not even Vista is above 2GB at 15 minutes in), there is a massive difference in usage between XP and Vista at all points. At the start of the replay there's already a 300MB difference in address space usage, and by 15 minutes in when Supreme Commander is heavily loaded down that difference has ballooned to 500MB, a full 25% of the total address space the application gets under normal circumstances.
Appropriately, the difference in address space usage was the reason that Supreme Commander would not crash under XP like it would under Vista. Address space usage peaked at 2.1GB, which while in excess of the default 2GB barrier is below the 2.6GB mark where it crashed under Vista. Even a slight reduction in address space usage here would have kept the game from hitting the 2GB barrier at all, avoiding the whole can of worms that is modifying the user address space allocations.
Supreme Commander Address Space Usage (Radeon X1900XTX, 512MB) |
|||
Game Start | Replay Start | Replay End | |
Windows Vista | 230MB | 1.15GB | 1.87GB |
Windows XP | 124MB | 939MB | 1.44GB |
. |
As we originally had a suspicion that this could be related to NVIDIA's drivers, we swapped out our 8800GTX for a 512MB Radeon X1900XTX and ran the Supreme Commander tests under both Vista and XP. The results were virtually identical with Supreme Commander consuming more address space under Vista than XP. Curiously however the overall amount of address space used by Vista is down slightly (by about 120MB) compared to the 8800GTX.
Supreme Commander Address Space Usage (GeForce 7800GTX, 256MB) |
|||
Game Start | Replay Start | Replay End | |
Windows Vista | 240MB | 1.10GB | 1.75GB |
Windows XP | 119MB | 928MB | 1.43GB |
. |
In trying to explain the difference in address space usage under Vista, we finally pulled out a 256MB GeForce 7800GTX. What we found was that the gap between Vista and XP remains, but it is smaller yet again as Vista's address space usage shrunk another 120MB compared to the 512MB Radeon card. With the above numbers we can definitely say there appears to be some sort of relationship between address space usage and video memory under Supreme Commander. But this also raises the question: is this difference in usage of our increasingly critical address space a function of Windows, or something specifically related to Supreme Commander?
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.
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.