I believe that SLI will double the address ranges reserved for video memory and I believe that it would make testing the limit with these games on Windows XP possible.
So, will SLI double the reserved address ranges? Considering that the board tested is an SLI board, I would recommend that it be tested in an SLI configuration with two 640MB+ cards.
It is about address space not physical memory installed. Some people don't seem to get that how much memory you have just doesn't matter. We have all been using Virtual memory for ever. As far as applications are concerned you don't run out of memory till you exhaust the address space. Vista seems to be chewing up a lot of that address space.
I think Anand has a good answer on the probable what/why here. Microsoft mapped the video memory into the user address space as a security measure. Security as in DRM. This prevents a second application from peaking into the video ram while you play a BluRay disk. So for Microsoft. It is a good tradeoff to lose a big chunk of address space, to protect you from pirating, your content on your machine. We should thank them I guess. Otherwise I might accidentally do a frame capture while playing a BluRay disk. That would be just awful. Much better to be protected against that and have few games crash due to resource exhaustion. Thank you Microsoft.
As a programmer, I will tell you that behaving gracefully when you are out of memory is a challenge. When new fails, you are likely hosed. You probably can't allocate memory to print out a message. You may as well exit because when you are out of memory it is game over. I see mission critical (five nines) code that doesn't even check the return code on new. I wouldn't hold gamer programmers to a higher standard.
Games that don't blow the memory on XP, but do on Vista is Microsoft problem. When CoH takes 1.3GB on XP and 2.1GB on Vista. This is stark loss of address range that Microsoft should never have embarked on for backward compatibility reasons.
Though supreme commander does deserve criticism because it can blow the memory on just about any setup. They should have tested worse case scenario and put blocks in on the number of AI/Units to prevent the memory wall from being breached.
ugh...typed a novel as a response and then got a posting error. Summation:
I see your point and understand the logic. I was just saying that the difference between the processing power of those cards are about the same ratio as both the onboard memory difference and the allocation in Vista. For quick reference, from TH VGA charts:
BF2142 1024x768 no AA (FPS)
7800GTX 256mb: 56.8
X1900XTX 512mb: 75.4
8800GTS 640mb: 94.6
I just find it interesting. One test with the 8800GTS 320mb could prove me wrong, that's all I'm asking.
"The amount of address space used with Vista seems to be related to the amount of video memory on our video card..."
Would like to see a test with 8800GTS 320mb vs. 8800GTS 640mb to confirm. Looking at the cards used, I wouldn't automatically chalk up the differences to onboard video memory, but instead to the processing power of each card.
Very interesting finds here, thanks for the nice fact finding article. :) Nice to see some real, hard facts against Vista for a change other than the random perpetuated junk.
Just a note it is still easy to crash SupCom however. As I said in the commentary for the 1st article it takes the X-large maps, 7 Advanced AI + 1 player, and 38-65 minutes of gameplay depending on econ ability of the particular map and use of the Resources x2 mod. If enough units were destroyed or an AI was killed off prematurely the game would never even crash. Using a 8800GTS 320mb card.
Physical RAM is how much RAM you have. Pretty simple.
Virtual Address Space is something the OS provides. Every 32 application thinks it has a full two (or three or four, whatever your OS configuration) gigabytes of RAM all to itself. It doesn't matter if you have an old PC with four megabytes or a new one with four gigabytes. It's just virtual memory, not real memory, and you've got two gigabytes of it.
You can run dozens of applications all thinking they have two gigabytes of memory on a system with only a few megabytes. Through virtualization of the RAM the OS will just page out bits to the swap file on demand.
Does anandtech make reference in their motherboard reviews to memory hoisting or memory hole remapping? Just read somewhere else that even with a 64bit operating system, you can lose 1GB or more of memory depending as you say on your video card config, in the 3-4GB address space. Thus with a 32bit operating system it is pointless to have more then 3 gigs of ram. Memory hole remapping moves this address space elsewhere, presumably where it does not affect the amount of ram available for applications the OS. (Quite a mess actually...)
Yeah, the memory hole feature moves the "offending" DIMM above the 4GB border, thus you end up seeing this memory only in Windows Server or 64-bit Windows. (and if you do decide to use 32-bit Windows Server, you end up with 3pointsomething GB anyway, because nVidia has not supported PAE since Forceware 79.11)
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.
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.
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?
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.
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.
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.
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...
It might be interesting to perform a test using Vista Home Basic, to see if the "overhead" inherent in the Aero GUI is a penalty in terms of memory use. My impression of the recent incarnations of Apple's GUI i.e. OS-X is that there is quite a penalty in terms of system resources as compared to the Windows XP GUI. It was with some pessimism that I saw Microsoft once again "emulating" Apple, as it produced a new GUI that is "real purdy" but uses appreciably more system resources. I would choose a "lean" interface that allows me to work (and a game might be considered work) more efficiently, that is, allocate computer resources to the work at hand as opposed to a glossy visual interface. I am not as technically adept as many or most of the Anandtech readers, so excuse me if my post is misguided. thanks.
You can turn off the superdeeduper effects in Vista and scale it back to XP or even to 2K. Windows should cut off rendering such data in a full screen game... I would think. But an interesting test, especially for people like me who WoW in a maxized window (and run dual monitors). I know Warcraft isnt a "modern" game but, when you have 25+ people dancing around, it brought my former 7600GS to a halt. How much extra memory will Vista's purdy UI cause the OS to shadow from the video card's resources?
I do not think it would have an effect if the app is 32bit. Vista 64 would only solve the problem with native 64bit apps....or maybe if the 32bit app has that large address flag or whatever.
I do not think it would have an effect if the app is 32bit. Vista 64 would only solve the problem with native 64bit apps....or maybe if the 32bit app has that large address flag or whatever.
I believe you would be correct about this, but I would still like to see it tested.
Now in XP64, or Vista64, how would the 32bit code address space work?
In x86 the /3g applies to the whole OS, but in x64 what does the 32bit app think it is running under? I assume that the code is meant to operate under 2g/2g but what is it actually given? Possibly a full 32bits worth of 4g?
What happens under Vista x64 with 4 or more gigs of ram when youre running Supreme Commander and push the apps VM to 2.5, 3, or 3.5 GB? Repeat with an app that is /3g aware?
The DX10 specification has that whole virtualization thing, and I heard that the R600 actually fully support it. I wonder if that will make vista happier in its memory management for games?
The reason could also be the way memory is allocated in vista as opposed to xp. If i am correct, then with superfetch it really tries to bring as much of the program in as possible, and this could relate to vista allocating more user space to program as opposed to xp. Simply put xp could be more conservative in allocating memory then vista is.
The best way to test it out would be to check other programs memory usage, like maybe Word2007, photoshop etc on the two operating systems.
Just my 2 cents
The other solution is to enable the A20 line already ;)) <- Joke
It's not SuperFetch. Unfortunately I can't find the MS article at this specific time, but there's one I read specifically talking about SF having its own allocations.
quote: i've noticed on a lot of game boxes that the minimum system requirements are different for vista and xp
usually its something like:
1gb ram (2gb if using vista)
as a gamer this kind of thing put me off and i stuck with xp
as i have got vista 64 my self and XP 32 dual boot on 2x2 80gb hdds RAID (2 for xp 2 for vista) i find games are basicly Unplayable in some cases on vista with 2gb of ram due to the game stuttering
i got 4gb of ram in it now (xp picks up 3.2gb but that hardy matters as i never see ram use pass 1.8gb)games run mostly fine DX10 games are flaky
Nvidia could fix this bug maybe setting there drivers to Not used shared ram as from the way it looks its the New way vista handles shared ram now on the 7800 256 it would waste an extra 256mb in VM but the 8800gtx has 756mb so it uses up 500mb more VM then the 7800GTX
Am I the only one who thinks Microsoft should release a Knowledge Base article on this issue? (Ryan, have you been in contact with them?) At least the creation of said article would be an "official" source to look for, acknowledgement, updates, or a hotfix. Until they create a KB article and admit to a fix, it is pure speculation that MS's opinion isn't, "Game developers need to learn to program correctly, not our problem."
Speaking of which, they had better get this done ASAP. I see two huge problems looming in their future. 1.) Back to School. 2.) Christmas. First, the college kids getting computers are going to be awfully mad if their games don't work. I'm sure all the developers and MS will get blamed equally for this. Same thing goes for Christmas. People are going to want to test new machines with the latest and greatest games/apps.
As for me, I have Vista 64, 4GB memory, with a 512MB ATI X1950. I had to edit the headers on FSX. Also C&C3. C&C 3 is such an allocation hog that it will run out of 3GB of address space. It will always do this in about 15-25 minutes on large maps, and 30-45 on smaller ones. Sure I can turn down the detail, but why the heck would I do that when I can run at "ultra-high" quality settings and get nothing less than 30fps? Fortunately I can tell when C&C 3 is about to crash (the icons go "pink"), which gives me time to save, quit, re-load and keep playing. Unfortunately I can't play online due to this problem.
What confuses me is that memory allocation is not a difficult problem... I don't know if the issue is becoming more prominent because game developers are really barely "adequate", or if they are off-shoring the labor to poorly trained (i.e. cheap) coding teams. I have no idea what a game developer earns, so I really couldn't make an educated guess as to where the problem is being introduced (other than the fact that Windows Vista isn't helping, and XP is really papering-over bad software architecture).
quote: Sure I can turn down the detail, but why the heck would I do that when I can run at "ultra-high" quality settings and get nothing less than 30fps?
Umm... maybe so the game stops crashing? You'd rather "save, quit, re-load and keep playing" and stop playing online, rather than turn down your settings??
quote: Umm... maybe so the game stops crashing? You'd rather "save, quit, re-load and keep playing" and stop playing online, rather than turn down your settings??
Yes, because otherwise I wasted a large amount of cash buying the fastest video card I could get my hands on. If I realized Vista was going to be problematic I should have bought a $60 card since I can apparently only make use of $60 quality.
Perhaps you should have done a little more research before basing a (presumably) $1000+ system on a young and mostly untested OS that is released from a company that is known for releasing its final betas under the guise of a "final product" or "golden master" on release date.
Don't worry, Microsoft will have the bugs ironed out in a year... or two... or three...
They're gonna release a service pack in November! Maybe that'll make Vista not suck so much memory! *crosses fingers*
Typically, system developers create elegant, well-designed API's with flexible error handling mechanisms, which application developers then completely ignore until their applications begin doing wierd things. This failure to use API's as intended was the reason why XP and Vista's 32-bit PAE kernels were crippled: driver developers could NOT be trusted to use the system API's as published at least a decade ago, so the whole MMIO remapping thing could not be enabled, which meant that PAE kernels had the same < 4 GB physical memory limitations as non-PAE kernels.
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.
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.
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.
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...
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...
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
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.
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.
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.
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.
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.
Supcom probably brings the windows VM to it's knees, and since programmers
are 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.
quote: You can paper over this by adding a few more gigs of ram,
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.
We’ve updated our terms. By continuing to use the site and/or by logging into your account, you agree to the Site’s updated Terms of Use and Privacy Policy.
57 Comments
Back to Article
CZroe - Wednesday, August 1, 2007 - link
I believe that SLI will double the address ranges reserved for video memory and I believe that it would make testing the limit with these games on Windows XP possible.So, will SLI double the reserved address ranges? Considering that the board tested is an SLI board, I would recommend that it be tested in an SLI configuration with two 640MB+ cards.
guidryp - Wednesday, July 25, 2007 - link
It is about address space not physical memory installed. Some people don't seem to get that how much memory you have just doesn't matter. We have all been using Virtual memory for ever. As far as applications are concerned you don't run out of memory till you exhaust the address space. Vista seems to be chewing up a lot of that address space.Vista:
256MB - 1.7G
512MB - 1.9G
768MB - 2.1G Ooops!
XP:
256MB - 1.3G
512MB - 1.3G
768MB - 1.3G
I think Anand has a good answer on the probable what/why here. Microsoft mapped the video memory into the user address space as a security measure. Security as in DRM. This prevents a second application from peaking into the video ram while you play a BluRay disk. So for Microsoft. It is a good tradeoff to lose a big chunk of address space, to protect you from pirating, your content on your machine. We should thank them I guess. Otherwise I might accidentally do a frame capture while playing a BluRay disk. That would be just awful. Much better to be protected against that and have few games crash due to resource exhaustion. Thank you Microsoft.
As a programmer, I will tell you that behaving gracefully when you are out of memory is a challenge. When new fails, you are likely hosed. You probably can't allocate memory to print out a message. You may as well exit because when you are out of memory it is game over. I see mission critical (five nines) code that doesn't even check the return code on new. I wouldn't hold gamer programmers to a higher standard.
Games that don't blow the memory on XP, but do on Vista is Microsoft problem. When CoH takes 1.3GB on XP and 2.1GB on Vista. This is stark loss of address range that Microsoft should never have embarked on for backward compatibility reasons.
Though supreme commander does deserve criticism because it can blow the memory on just about any setup. They should have tested worse case scenario and put blocks in on the number of AI/Units to prevent the memory wall from being breached.
zagood - Thursday, July 26, 2007 - link
ugh...typed a novel as a response and then got a posting error. Summation:I see your point and understand the logic. I was just saying that the difference between the processing power of those cards are about the same ratio as both the onboard memory difference and the allocation in Vista. For quick reference, from TH VGA charts:
BF2142 1024x768 no AA (FPS)
7800GTX 256mb: 56.8
X1900XTX 512mb: 75.4
8800GTS 640mb: 94.6
I just find it interesting. One test with the 8800GTS 320mb could prove me wrong, that's all I'm asking.
-z
zagood - Monday, July 23, 2007 - link
"The amount of address space used with Vista seems to be related to the amount of video memory on our video card..."Would like to see a test with 8800GTS 320mb vs. 8800GTS 640mb to confirm. Looking at the cards used, I wouldn't automatically chalk up the differences to onboard video memory, but instead to the processing power of each card.
-z
Kougar - Saturday, July 21, 2007 - link
Very interesting finds here, thanks for the nice fact finding article. :) Nice to see some real, hard facts against Vista for a change other than the random perpetuated junk.Just a note it is still easy to crash SupCom however. As I said in the commentary for the 1st article it takes the X-large maps, 7 Advanced AI + 1 player, and 38-65 minutes of gameplay depending on econ ability of the particular map and use of the Resources x2 mod. If enough units were destroyed or an AI was killed off prematurely the game would never even crash. Using a 8800GTS 320mb card.
titan7 - Thursday, July 19, 2007 - link
Physical RAM is how much RAM you have. Pretty simple.Virtual Address Space is something the OS provides. Every 32 application thinks it has a full two (or three or four, whatever your OS configuration) gigabytes of RAM all to itself. It doesn't matter if you have an old PC with four megabytes or a new one with four gigabytes. It's just virtual memory, not real memory, and you've got two gigabytes of it.
You can run dozens of applications all thinking they have two gigabytes of memory on a system with only a few megabytes. Through virtualization of the RAM the OS will just page out bits to the swap file on demand.
nullpointerus - Friday, July 20, 2007 - link
This stuff was covered in Part 1.Or did you intend to respond to someone in the comments section?
spazmedia - Thursday, July 19, 2007 - link
Does anandtech make reference in their motherboard reviews to memory hoisting or memory hole remapping? Just read somewhere else that even with a 64bit operating system, you can lose 1GB or more of memory depending as you say on your video card config, in the 3-4GB address space. Thus with a 32bit operating system it is pointless to have more then 3 gigs of ram. Memory hole remapping moves this address space elsewhere, presumably where it does not affect the amount of ram available for applications the OS. (Quite a mess actually...)BikeDude - Sunday, July 29, 2007 - link
Yeah, the memory hole feature moves the "offending" DIMM above the 4GB border, thus you end up seeing this memory only in Windows Server or 64-bit Windows. (and if you do decide to use 32-bit Windows Server, you end up with 3pointsomething GB anyway, because nVidia has not supported PAE since Forceware 79.11)titan7 - Thursday, July 19, 2007 - link
If it really is a WDDM problem couldn't you install some old Windows XP drivers instead of speculating? Or does vista 100% require wddm drivers?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...chalk - Thursday, July 19, 2007 - link
It might be interesting to perform a test using Vista Home Basic, to see if the "overhead" inherent in the Aero GUI is a penalty in terms of memory use. My impression of the recent incarnations of Apple's GUI i.e. OS-X is that there is quite a penalty in terms of system resources as compared to the Windows XP GUI. It was with some pessimism that I saw Microsoft once again "emulating" Apple, as it produced a new GUI that is "real purdy" but uses appreciably more system resources. I would choose a "lean" interface that allows me to work (and a game might be considered work) more efficiently, that is, allocate computer resources to the work at hand as opposed to a glossy visual interface. I am not as technically adept as many or most of the Anandtech readers, so excuse me if my post is misguided. thanks.EndPCNoise - Friday, July 20, 2007 - link
I believe the Aero GUI (Graphic User Interface) can be switched off, and Vista can be run in a more "basic" GUI - less of a resource hog.I would also be interested if this makes any difference.
Sulphademus - Friday, July 20, 2007 - link
You can turn off the superdeeduper effects in Vista and scale it back to XP or even to 2K. Windows should cut off rendering such data in a full screen game... I would think. But an interesting test, especially for people like me who WoW in a maxized window (and run dual monitors). I know Warcraft isnt a "modern" game but, when you have 25+ people dancing around, it brought my former 7600GS to a halt. How much extra memory will Vista's purdy UI cause the OS to shadow from the video card's resources?Inquiring minds want to know!
leexgx - Thursday, July 19, 2007 - link
all these tests have been done under the 32 bit sides of windows what about 64 bitbrian26 - Thursday, July 19, 2007 - link
The title says it all, id like to see what kind of impact Vista x64 has on the same tests.Zorlac - Thursday, July 19, 2007 - link
I do not think it would have an effect if the app is 32bit. Vista 64 would only solve the problem with native 64bit apps....or maybe if the 32bit app has that large address flag or whatever.EndPCNoise - Friday, July 20, 2007 - link
I do not think it would have an effect if the app is 32bit. Vista 64 would only solve the problem with native 64bit apps....or maybe if the 32bit app has that large address flag or whatever.I believe you would be correct about this, but I would still like to see it tested.
Sulphademus - Friday, July 20, 2007 - link
Now in XP64, or Vista64, how would the 32bit code address space work?In x86 the /3g applies to the whole OS, but in x64 what does the 32bit app think it is running under? I assume that the code is meant to operate under 2g/2g but what is it actually given? Possibly a full 32bits worth of 4g?
What happens under Vista x64 with 4 or more gigs of ram when youre running Supreme Commander and push the apps VM to 2.5, 3, or 3.5 GB? Repeat with an app that is /3g aware?
xiaowugui - Thursday, July 19, 2007 - link
The DX10 specification has that whole virtualization thing, and I heard that the R600 actually fully support it. I wonder if that will make vista happier in its memory management for games?BUL - Thursday, July 19, 2007 - link
...the ever-growing Trapper Keeper from "South Park".totallycool - Thursday, July 19, 2007 - link
The reason could also be the way memory is allocated in vista as opposed to xp. If i am correct, then with superfetch it really tries to bring as much of the program in as possible, and this could relate to vista allocating more user space to program as opposed to xp. Simply put xp could be more conservative in allocating memory then vista is.The best way to test it out would be to check other programs memory usage, like maybe Word2007, photoshop etc on the two operating systems.
Just my 2 cents
The other solution is to enable the A20 line already ;)) <- Joke
Ryan Smith - Thursday, July 19, 2007 - link
It's not SuperFetch. Unfortunately I can't find the MS article at this specific time, but there's one I read specifically talking about SF having its own allocations.BUL - Thursday, July 19, 2007 - link
What registry setting is the equivalent of "DOS=HIGH"? And wouldn't it be the A36 line? (I'm just messing with you...)strafejumper - Thursday, July 19, 2007 - link
i've noticed on a lot of game boxes that the minimum system requirements are different for vista and xpusually its something like:
1gb ram (2gb if using vista)
as a gamer this kind of thing put me off and i stuck with xp
leexgx - Thursday, July 19, 2007 - link
as i have got vista 64 my self and XP 32 dual boot on 2x2 80gb hdds RAID (2 for xp 2 for vista) i find games are basicly Unplayable in some cases on vista with 2gb of ram due to the game stuttering
i got 4gb of ram in it now (xp picks up 3.2gb but that hardy matters as i never see ram use pass 1.8gb)games run mostly fine DX10 games are flaky
Nvidia could fix this bug maybe setting there drivers to Not used shared ram as from the way it looks its the New way vista handles shared ram now on the 7800 256 it would waste an extra 256mb in VM but the 8800gtx has 756mb so it uses up 500mb more VM then the 7800GTX
ChristopherO - Thursday, July 19, 2007 - link
Am I the only one who thinks Microsoft should release a Knowledge Base article on this issue? (Ryan, have you been in contact with them?) At least the creation of said article would be an "official" source to look for, acknowledgement, updates, or a hotfix. Until they create a KB article and admit to a fix, it is pure speculation that MS's opinion isn't, "Game developers need to learn to program correctly, not our problem."Speaking of which, they had better get this done ASAP. I see two huge problems looming in their future. 1.) Back to School. 2.) Christmas. First, the college kids getting computers are going to be awfully mad if their games don't work. I'm sure all the developers and MS will get blamed equally for this. Same thing goes for Christmas. People are going to want to test new machines with the latest and greatest games/apps.
As for me, I have Vista 64, 4GB memory, with a 512MB ATI X1950. I had to edit the headers on FSX. Also C&C3. C&C 3 is such an allocation hog that it will run out of 3GB of address space. It will always do this in about 15-25 minutes on large maps, and 30-45 on smaller ones. Sure I can turn down the detail, but why the heck would I do that when I can run at "ultra-high" quality settings and get nothing less than 30fps? Fortunately I can tell when C&C 3 is about to crash (the icons go "pink"), which gives me time to save, quit, re-load and keep playing. Unfortunately I can't play online due to this problem.
What confuses me is that memory allocation is not a difficult problem... I don't know if the issue is becoming more prominent because game developers are really barely "adequate", or if they are off-shoring the labor to poorly trained (i.e. cheap) coding teams. I have no idea what a game developer earns, so I really couldn't make an educated guess as to where the problem is being introduced (other than the fact that Windows Vista isn't helping, and XP is really papering-over bad software architecture).
JCheng - Thursday, July 19, 2007 - link
Umm... maybe so the game stops crashing? You'd rather "save, quit, re-load and keep playing" and stop playing online, rather than turn down your settings??
ChristopherO - Thursday, July 19, 2007 - link
Yes, because otherwise I wasted a large amount of cash buying the fastest video card I could get my hands on. If I realized Vista was going to be problematic I should have bought a $60 card since I can apparently only make use of $60 quality.
elpresidente2075 - Sunday, July 22, 2007 - link
Perhaps you should have done a little more research before basing a (presumably) $1000+ system on a young and mostly untested OS that is released from a company that is known for releasing its final betas under the guise of a "final product" or "golden master" on release date.Don't worry, Microsoft will have the bugs ironed out in a year... or two... or three...
They're gonna release a service pack in November! Maybe that'll make Vista not suck so much memory! *crosses fingers*
nullpointerus - Thursday, July 19, 2007 - link
Typically, system developers create elegant, well-designed API's with flexible error handling mechanisms, which application developers then completely ignore until their applications begin doing wierd things. This failure to use API's as intended was the reason why XP and Vista's 32-bit PAE kernels were crippled: driver developers could NOT be trusted to use the system API's as published at least a decade ago, so the whole MMIO remapping thing could not be enabled, which meant that PAE kernels had the same < 4 GB physical memory limitations as non-PAE kernels.mlau - Thursday, July 19, 2007 - link
PAE is a hackish solution to enable more than 4 GB *physical* RAM; it hasnothing 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.
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.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.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.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...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...
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...
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
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.
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.
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.