Why can't Windows 7 x64 use all installed memory?

8

1

I'm running Windows 7 x64 RTM on a Dell Latitude D520 w/ 4gb memory. The system control panel reports:

System type: 64-bit Operating System
Installed memory: 4.00 GB (3.24 usable)

Why isn't all the memory usable? Since I'm running 64-bit, is this a dell limitation?


Edit:

It's given me more questions:

  1. If the system reports that I can use 3.24GB, does that mean that 760MB is being used by the video card? That seems like a lot, and the specs on this page state it will use up to 128MB)
  2. If 760MB isn't being used by video, is it being wasted?
  3. Does running 64-bit windows help me at all? If not, are there other advantages to 64-bit windows?

Michael Haren

Posted 2009-08-09T17:48:44.720

Reputation: 729

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

Answers

5

Either you do what Post#1 suggests, or your motherboard simply doesn't support the memory address mapping, which means: No 4GB for you with this hardware.

Waaahsabi

Posted 2009-08-09T17:48:44.720

Reputation: 111

1

What is Post#1? Do you mean John T's answer?

– Tamara Wijsman – 2011-02-25T23:03:05.963

9

There are 2 probable reasons for this.

  • You need to turn on Memory Remapping in your BIOS
  • Your video card may be sharing internal memory.

It is usually the latter that is the case. This was one of the planned features of Windows 7, you can read up on it here.

John T

Posted 2009-08-09T17:48:44.720

Reputation: 149 037

Flashing bios now to latest...will poke around in bios on restart for that option. Be back in a minute... – Michael Haren – 2009-08-09T17:57:00.660

1Updating the BIOS didn't help. I didn't see any memory related settings in there, either. Though, it did have this message: "Due to the amount of memory being assigned for system use, memory available is less than memory installed." – Michael Haren – 2009-08-09T18:07:39.153

1that would indicate it is sharing memory... probably with your video card. – John T – 2009-08-09T18:11:02.030

i thought that 64-bit was supposed to fix this...so I'm looking at a Dell/chipset limitation? – Michael Haren – 2009-08-09T18:20:48.840

No it's how Windows 7 handles shared gpu memory – John T – 2009-08-09T18:25:49.593

Please pardon my ignorance on this topic: is this a limitation or is Windows really doing me a favor here? Should I be happy or should I keep looking for a solution? Is 64- bit helping at all or am I wasting my time and should just use the better supported 32-bit? – Michael Haren – 2009-08-09T18:39:08.733

Windows is doing you a favor, this greatly helps performance. It is not an error. – John T – 2009-08-09T18:40:39.103

would it be any different for x86 windows? – Michael Haren – 2009-08-09T18:49:43.700

May I mention that I doubt it's the video memory? The Intel GMA 950 (what I have here) has a maximum of 224 MiB shared memory. This can't explain the loss of around 1 GiB of RAM. – Joey – 2009-08-09T18:52:08.500

3By default your chipset has memory remap turned of to be compatible with 32-bit systems. This causes pci cards/gfx cards/io cards and everything to be mapped into memory below the 4GB limit. This happens before Windows comes into the picture and there's nothing Windows can do about it.

To be able to use your memory you need a 64-bit OS and memory remap turned on. – Paxxi – 2009-08-09T20:33:25.043

1Forgot to add, if you cannot find this in your BIOS you should contact your hardware vendor

Vista SP1 introduced a new "feature" that displays all installed memory instead of all memory available to Windows to avoid these kind of questions.

This means that Vista pre-sp1 displays 2.93GB and Vista post-sp1 displays 4GB. The end result is the same, all that changes are the cosmetics. – Paxxi – 2009-08-09T20:35:47.813

0

It may be a windows limitation, too. However there aren't usually on pre-release version IIRC.

wazoox

Posted 2009-08-09T17:48:44.720

Reputation: 1 285

I'm running RTM, Ultimate (from MSDN) – Michael Haren – 2009-08-09T18:06:05.710

0

I have a D520, and I see about the same amount of loss. I'm running Linux with a kernel that has PAE enabled. I'd always assumed that the missing memory was being used for the onboard video chipset.

Jim Hunziker

Posted 2009-08-09T17:48:44.720

Reputation: 1 069

0

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:

  1. Moving whatever was there to the page file. . . (spin spin)
  2. Writing in the OS memory map database where you put the file
  3. If it needs contagious memory . . . repeat 1 and 2
  4. The video card then has to wait for the memory to be allocated. (twiddle thumbs)
  5. Loading up textures for the video card. (spin spin)
  6. Writing in the memory map database where you put the textures
  7. 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!!"
  8. The graphics card then decides, based on some algorithm, what it should and should not keep.
  9. Then tell the OS what part of the memory it is not using.
  10. 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.

surfasb

Posted 2009-08-09T17:48:44.720

Reputation: 21 453

@surfasb: "Remapping" does not at all mean what you think it means. To put the video card's window above the 4 GB point does not involve any "remapping", it just means mapping it there in the first place. Yes, that window can then be "remapped" to various locations within the card's RAM; but this involves no paging or basically any of what you describe. As for the pointers, those are virtual addresses; on a 32-bit system they stay at 32 bits regardless of how much RAM you have. – Jamie Hanrahan – 2015-07-24T05:23:02.507

x64 pointers ARE longer, none of this applies to a 64-bit OS. – Ben Voigt – 2011-07-01T02:42:06.787