Final Thoughts

Among all of our tests, there are three identifiable patterns, all relating to some difference between Vista and XP. Those are:

  1. Vista is using more address space than XP in all situations
  2. The amount of address space used with Vista seems to be related to the amount of video memory on our video card
  3. 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.

A Second Opinion
POST A COMMENT

57 Comments

View All Comments

  • mlau - Thursday, July 19, 2007 - link

    PAE is a hackish solution to enable more than 4 GB *physical* RAM; it has
    nothing to do with address space (where 4GB is still a limit).

    But you are right, most windows driver devs are morons and only know how to
    work with 32bit UP kernels. Thank heavens for unix where 64bit SMP is an old
    thing.
    Reply
  • pallejr - Sunday, July 22, 2007 - link

    It's not really a hackish solution. It's a way to extend to PHysical address space beyond 4GB. Reply
  • ChronoReverse - Thursday, July 19, 2007 - link

    I was under the impression that VRAM is virtualized under Vista so that multiple programs are presented with the full memory of the video card. Since this memory needs to be addressable, each (3D) program will immediately have the VRAM allocated. Reply
  • Slaimus - Thursday, July 19, 2007 - link

    I remember reading that the virtualization was made optional for DX10, because many graphics chip makers were unable to implement it properly in their drivers. Reply
  • kf27fix - Thursday, July 19, 2007 - link

    What about other software, other than games? For example does Word (2003 or 2007) use more memory/address space under Vista than under XP? Perhaps it's not just games... Reply
  • mlau - Thursday, July 19, 2007 - link

    How did you "measure" the "address space consuption"?
    Do you actually know what gets mapped into the games' address space.
    Because code bloat alone could not explain the vast differences between
    vista and xp...
    Reply
  • nullpointerus - Thursday, July 19, 2007 - link

    Part 1 of this article series describes how they monitored virtual address space usage.

    http://www.anandtech.com/gadgets/showdoc.aspx?i=30...">http://www.anandtech.com/gadgets/showdoc.aspx?i=30...
    Reply
  • imaheadcase - Thursday, July 19, 2007 - link

    Does a game fill video memory first,then offload the rest to system memory? Don't scream "noob alert" for the question..because.. I ask if a 8800GTS with 320megs should NOT have Supcom crash if you also have 2gigs of ram, 2gig + 384gig = 2.384gig give or take for Supcom to use?

    Inspiring minds want to know!

    Also, another "fix" you also should mention is just lowering details in such games to save space in memory.

    Did you look at Vista SP1 fixes website to see if such a item could be a "fix" for this? It might already be listed there, just not available till SP1
    Reply
  • grant2 - Thursday, July 19, 2007 - link

    I ask if a 8800GTS with 320megs should NOT have Supcom crash if you also have 2gigs of ram, 2gig + 384gig = 2.384gig give or take for Supcom to use?
    The OS only offers 2gigs of address space to the application. So the amount of physical chip memory is not the issue at hand here. Even if you have 3, 4, 6gb of memory on your motherboard, the software can only "see" 2gb of it.

    When it comes to your graphics card, the application needs to address ("see") the video memory. So (in vista) the larger your video card, the more of that valuable address space is consumed by being pointed to the vcard memory.
    Reply
  • EndPCNoise - Friday, July 20, 2007 - link

    Hopefully Ryan Smith or grant2 or somebody can answer this:

    Assume you are running either 32-bit XP,XP Pro or 32-bit Vista.

    If you have 4GB of RAM installed on your motherboard, then ALL your address space should be used in on-board RAM and video card RAM, and NONE in Virtual Memory (Hard Disk Drive). Is this correct?

    Windows could not use Virtual Memory because all the address space has been accounted for in on-board RAM and video card RAM (assuming you have 4GB RAM installed). Is this correct?

    You would still have the 4GB address space limitation -- 2GB for the operating system and 2GB for applications. I believe the 2GB application limit would still be breached. However, would the crash be delayed due to the fact that the CPU can access RAM much faster than Virtual Memory?

    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.

    I apologize for sounding like such a dummy, but most of this stuff is "out of my league." I appreciate your help in my understanding. This is why Anandtech is my favorite site.
    Reply

Log in

Don't have an account? Sign up now