It's a limitation of your chipset/video card/device driver. Windows(or in some cases, BIOS) maps memory to the video card to use cause it doesn't have its own memory. Windows can't just use it whenever it wants cause, it would be a violation of sound principles. Microsoft had thought about mapping and remapping that memory above the 4GB line based on usage. The problem thought was this would cause HUGE instability on consumer systems. Notice that Windows Server does NOT suffer from the 4GB limit, even on x86 machines...
http://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx#physical_memory_limits_windows_server_2003
The reason was, again, device drivers. The server market tends to have a smaller market of device driver and DD developers, thus it was possible to test and support larger address spaces. On the consumer side, this is a nightmare. Technically, XP SP2 and above x86 OSes CAN use memory address over 4GB. Not all device drivers though supported that, since going over 4GB meant your pointers are longer. Thus DDs would often spit out an error and thus cause blue screen or not even boot.
Another consequence of remapping the video memory is that the video card is latency sensitive. Remapping the memory back to the card involves the following:
- Moving whatever was there to the page file. . . (spin spin)
- Writing in the OS memory map database where you put the file
- If it needs contagious memory . . . repeat 1 and 2
- The video card then has to wait for the memory to be allocated. (twiddle thumbs)
- Loading up textures for the video card. (spin spin)
- Writing in the memory map database where you put the textures
- Then constantly poll the graphics card, "Are you done yet? Are you done yet?? Yeah! Yeah!? Cause Johnny boy in the taskbar REALLY REALLY needs to go BAD!!"
- The graphics card then decides, based on some algorithm, what it should and should not keep.
- Then tell the OS what part of the memory it is not using.
- All this in time to give you 60 frames a second (well not technically, but you see the point)
This will also affect all the other drivers that the OS manages that are latency sensitive ie audio driver (skip skip) and network drivers (Hey, how did that guy teleport through the door!?)
How can you solve this? By promoting a higher quality of device driver developers. They are HIGHLY underrated and unappreciated. Ideas include sending your local DD developers care packages, Lego Robotics kits, big monitors, and of course, women.
I'm seeing the same thing,
Installed memory (RAM): 32.0 GB (16.0 usable)
– jxramos – 2019-06-03T19:49:40.940@Joey, Vista was no better at the memory usage it was just reported differently in the GUI – edusysadmin – 2011-02-12T16:20:00.707
@edu: Know that by now. Didn't back then, though. – Joey – 2011-02-12T16:52:00.583