Discussion in 'Graphics Cards' started by Mussels, Apr 15, 2009.
Great post Mussels. I'm glad im out of the 32bit club
added a small update to the end. wow, did that post get me a loooot of thanks.
I'm guessing that ridiculous new dual GTX285 would make it impossible to actually use a 32 bit OS then would it?
it would work, but you sure wouldnt be getting its full potential.
Nice explanation there, Mussels. I already understand how this works, but your post is a great place to direct my friends to, who are less knowledgeable on this subject.
A well deserved thanks.
EDIT: In fact, I now remember reading about this somewhere else a while ago (sorry, I can't remember where it was now) that went into great technical detail into what happens when a 32-bit app runs out of it's 2GB address space. In short, it bombs out and there's very little that can be done about it. The app developers have to take it into account, but most don't. They discussed how a particular game would crash and how a little more memory can be made available to 32-bit apps like that one with a startup switch, which invariably causes more problems than it solves.
Re-compiling the app as a 64-bit executable solves the problem completely.
supreme commander was a great example. Prior to the expansion (when they patched it to be 2GB+ aware) the game would crash out if you used high graphics settings on 80KM maps, and the game lasted over an hour.
when diagnosing the crashes we noticed lots of XP users would crash out and the game would use 1.5-1.75GB of ram in their task manager - it was always 2GB minus their video card. thats what started me off into researching this whole thing.
i think lots of information in this thread is incorrect. i'm on my way to computex now so dont have much time for a full reply.
afaik there is no mirroring of vga memory into usermode. ever. use this to check the validity of yoru assumptions. 32-bit apps have 2 gb user mode address space and 2 gb kernel address space.
i found it in a microsoft document, after being linked on the relic forums in a discussion about their DX10 patch. i think the document YOU linked to even discussed it - let me check.
edit: here we go
They discuss how the local copy of Vram was removed in DX10/WDDM1.0 and above.
copy of resources doesnt mean mirror of the whole memory. the wording also isnt clear if those copies are in user mode or kernel mode
i originally found a clearer article elsewhere, i'm trying to locate it.
edit: google isnt helping me locate it, i dont know what wording they used in the article.
I remember it being discussed on the relic forums, they suggested vista 32 users with low amounts of system ram to use DX10 mode in order to reduce the memory overheads, due to it not mirroring. this was a few years back when the 1.70 patch came out (and DX10 support was added to the game) so i'm having trouble finding that post as well.
edit 2: closest i can find is other people talking about the same thing.
"It can appear that game using DX9 is using more memory in Vista because memory is allocated twice. You should run games in DX10. "
another edit: i think i may have found a misinterpretation where i first heard this. instead of being mirrored, it may be the following.
In DX9 applications, the CPU does its share of the work, passes it to system memory, and then it goes to video card memory.
In DX10 applications the CPU can directly access video card ram, bypassing the need for a temporary copy of the ram in system ram.
So instead of being a copy of however much is in use, it may just be on an 'as needed' basis (which can still chew up a lot of ram if you're using really high settings)
all I know is that I've always maintained 4 times the system ram as vga ram and it's always balanced out for me. which is why I won't be able to get a 1gb card until i upgrade my memory.
so back when I had 4mb gpu I had 16mb memory, 8-32, 16-64, 64-256, 128-512, 256-1024, and now 512-2048.
I couldn't tell you why but I've never strayed from it.
Title: New Windows 7 WDDM 1.1 drivers save you RAM
This should help clear the WDDM stuff up a bit
well there we go xenos, it seems my original information was correct... this is probably the only time i've seen w1zzard proven wrong on something (and its not like he concretely disagreed here, so he was only half-wrong)
I'll be adding this to the OP once i have a quick read.
Can setting GFX aperture size in BIOS to a smaller figure reduce this effect? I have always set mine to 64
i'm not entirely sure. Its hard to find any solid documentation on this stuff. I cant rule it out, but as far as i can remember i've only seen that setting on AGP boards.
google found me an article from our king reading now to see if it applies
So no, the setting wont directly affect it. Its merely a "video card can use X system ram, when it runs out" - its the page file of AGP cards.
Yes although just going to Vista's WDDM 1.0 isn't enough, you need to go over to Windows 7 to get the full effect with WDDM 1.1 as this is a brand new feature
WDDM1 and 1.1 are related to aero and the windows desktop only. What this is, is to save system memory from rendering aero alone - the pictures they have show ram savings from having heaps of windows open.
All it is, is that MS has ported aero to DX10 to save ram. (and yes, you need to use 7 to get it)
Btw, my system is infact using 4088MB of the total 4096MB and I'm using XP 32bit...
OS sees 3327MB and the unmanaged 766MB is allocated as a RAM disk so only 8MB of the total 4096MB is wasted.
And the funny thing is; I have a HD4890 with 1024MB of GDDR5 and OS has >3GB usable, so the quote from OP is not correct.
the OS can see it, but it still cant use it. MS decided to make the OS show how much is installed as opposed to available in the latest service packs... i guess people were trying to sue over being sold a 4GB machine with "only" 3-3.5GB 'showing'
MS "Engineering Windows 7" blog excerpt
I'm new here, but I found this interesting, and wanted to add this reference just in case it helps. Can anyone comment on how this might affect video stability?
"Desktop Graphics - Reduced Memory Footprint
Another area which affects system responsiveness is memory usage. Simply put, increased system memory (RAM) usage leads to an increased paging activity which directly leads to reduced system responsiveness. Thus, for the best responsiveness, all applications, processes and OS components need to use as little system memory as possible.
In Windows Vista, the amount of memory required to run multiple windows scales linearly with the number of windows opened on the system. This results in more memory pressure when there are more windows or if the monitors have higher resolution. It gets worse if you have more than one monitor. As part of investigating various means to improve system responsiveness, we saw a great opportunity in reducing the usage of system memory by DWM. In Windows Vista, every GDI application window accounts for two memory allocations which hold identical content – one in video memory and one in system memory. DWM is responsible for composition of the desktop through the graphics hardware. Hence, it requires a copy of the same allocation in video memory, which is easily accessible by the graphics hardware. The duplicate copy present in system memory is required because GDI is being rendered utilizing the CPU completely in the operating system without any assistance or “acceleration” by the graphics hardware. As the CPU performs all the tasks for rendering GDI applications, it requires an easily accessible cacheable copy of memory.
Existing memory allocations.
Figure 5. Existing memory allocations.
Windows 7 saves one copy of the memory allocation per application window by getting rid of the system memory copy entirely. Thus, for a GDI application window visible on the desktop, the memory consumed is cut in half."
Thanks for the info it helps me to kind of understand what was happening to my system last may in my old build. I just could not get my 3870 to work but then again I had a 64bit OS installed
Bashing us 32-biters i see.
Going to be using 4GB RAM(windows sees 2.75 tho) and a 896MB card, games should run fine.
I added this to the first post a week or two ago actually. The drop in memory use is because windows 7 moved to WDDM 1.1, which is in fact directX 10 based. Running DX10 removes the memory copy in DX9, which means if you're on onboard video wndows 7 uses half as much memory for the GUI as windows vista.
sure they will. with a maximum of 1152MB of available ram per game. (2048MB per 32 bit app, minus video card ram)
wow! Very informative post.
So my rig is:
C2D E6600 @3.4ghz
4gb corsair dominators
2 GF 8800GTS SLI (640mb each)
I'm currently running dual boot, Win7 RC 32bit and WinXP 32-bit.
Win7 reports 2.5gb usable. So are you saying that the actually usage of ram for games is less then 2.5gb? Should I just use Windows 7 64bit?
I played around with 7 64-bit, and the games seem to run slower than when running 7 32-bit. For example, TF2 felt slower on 64-bit, COD5 felt slower on 64bit.
You said: "This shows another side to this - 32 bit applications can only have 2GB total for the entire application, regardless of the amount of available ram and system-wide address space. so even if you have 4GB of ram and 3.5GB showing as available, if you've got a 1GB video card in a 32 bit OS you're in for a world of hurt."
Does that mean, depending on the game, more video card memory will hurt you more than help? Using the same hypothetical, what if you have a 2gb card (like the new 285gtx), does that actually make performance worse then? I was thinking of buying a 285gtx 2gb to replace my two 8800gts.
Does this also mean that regardless of how much system ram you have on a 64 bit OS, 32-bit apps will only be limited to 2gb of vitrual memory thingy and therefore all that extra amount of ram you have is useless for that 1 particular 32-bit app? So the only plus side to running 32-bit apps (and 95% of games are still 32-bit unfortunately) on a 64-bit OS is the you can run 5 32-bit games at one time with minimal drag?
Also, I think the 8800 Geforces are Dx9 cards. So even if you are running Vista or 7, are you still confine to the memory mirroring problem?
So much memory chatter, this is confusing to me sometimes!
I aplogize if these are noob questions.
under a 32 bit OS, each application can only use 2GB maximum.
Thats address space - and your video cards ram uses that. DX9 applications also duplicate into system memory - so with a 640MB card (only one counts, memory doesnt add in SLI) you have 640MB as a maximum address spaced used, as well as a duplication of that memory.
WORST case, with every video setting cranked to the max using all 640MB of video ram - you'd have about 800MB left over for your game. I'd expect it to be more around the 1-1.2GB mark.
Separate names with a comma.