Why can’t I see all of the 4GB of RAM in my machine?, redux


Phil Taylor gives another few reasons why machine with 4GB of RAM doesn’t show up as such.

(Here’s my earlier posting on this subject, for reference.)

These articles about possible reasons for memory not showing up are not intended to be comprehensive. It is entirely possible that the problem you are experiencing is not one described here.

Comments (15)
  1. Gene says:

    The first line of the blog post is "The best explanation of this I have yet found is here;" Where here is a link to another page, which is also an MSDN blog.  Trying to get a buddy some hits by having us click through his entry to get to the good one? :p

  2. Alexander Grigoriev says:

    PTaylor’s posting is complete blabber. It sounds like a wannabe hacker who heard something and is reciting it to the chicks, trying to look cool. What "physical RAM above 2G means standard 32-bit processes stand a chance of fitting entirely into RAM together with the OS" means? WHat "Finally, notice the potential for PAE and DEP errors." means?

  3. Yuhong Bao says:

    BTW, I once asked Larry Osterman if real PAE support to access more than 4GB of RAM can be added to client versions of Windows. Needless to say he said no:

    http://blogs.msdn.com/larryosterman/archive/2009/01/08/why-do-people-think-that-a-server-sku-works-well-as-a-general-purpose-operating-system.aspx#9302522

    Currently it is only available in Enterprise editions of Windows Server.

  4. "physical RAM above 2G means standard 32-bit processes stand a chance of fitting entirely into RAM together with the OS" Means that if you have 2GB of physical RAM, the system is less likely to have to page out portions of your application to disk (i.e. it stays in physical memory and will execute faster because it doesn’t have to be paged back into physical memory from disk).  Keeping in mind that parts of the OS must always be in physical memory and thus that portion of physical memory can’t be used for applications.

  5. Alexandre Grigoriev says:

    Yuhong Bao,

    What you mean "added"? Do you really think it’s not there in Vista x86 kernel? I suppose SP1 kernel is the same as Win2008. And client x64 Vista can use memory above 4GB, this is why it’s able to use all of 4 GB of RAM (including the part remapped from PCI hole).

  6. Nick Lamb says:

    A particularly critical error in PTaylor’s posting is that he doesn’t grasp the difference between address space and RAM. He says the memory is "in use" but actually in the circumstance he’s looking at only the address space is in use, lots of RAM is unused, sitting there useless.

    But hey, PTaylor’s just some guy working in the toys & games division. It’s just a shame that Raymond linked him after his own previous explanation was so good.

    It does seem to me that since Microsoft is part of the problem (offering a "consumer" OS which won’t use all your hardware, then a separate more expensive version which does) they ought to help give people a clue. It should be possible for Windows to indicate "Hey, you actually have 4GB of RAM and if you went 64-bit you could use it all" vs "You may have fitted 4GB, but the chipset doesn’t support mapping it anywhere useful, so that’s a write off"

    The very poor standard of 3rd party kernel drivers (AFAICT that’s one big reason you won’t have a consumer Windows with PAE) is also Microsoft’s problem even if it’s arguably not their fault.

  7. Nick Lamb says:

    Alexandre Grigoriev,

    It isn’t there. Or at least, it’s entirely disabled, beyond the point where you can "just" turn it back on. I’d guess it’s a compile time decision, but I have no privileged information.

    You can suppose whatever you like, but reality is unmoved by your suppositions.

    Using memory above 4GB in a /64-bit/ operating system doesn’t require PAE (but it still needs a suitable mainboard chipset, not to mention the 64-bit CPU). The PAE CPUID bit is set on x86-64 hardware only because those chips can also run 32-bit with PAE mode (offering a quite different trade off in performance terms than the x86-64 "long" mode)

  8. Alexandre Grigoriev says:

    Nick Lamb,

    x64 OS always runs in PAE mode. No exceptions. There is no non-PAE mode for 64-bit virtual addressing.

    In any case, if your OS is really using 4GB of RAM, you’ll have to access addresses above 4GB, just because you need to access your PCI devices. And client Vista x64 does just that.

    When I’ll get around to it, I’ll compare Vista x86 SP1 HAL and kernel with their Win2008 counterparts. I’m curious how much different they are.

    PS. Anybody, please fix this blogs.msdn.com blog engine. It’s so unreliable. No, don’t fix, just replace it with the one that works. I don’t mind if it’s PHP based instead of aspx. Just  make it work.

  9. mx.2000 says:

    This is what you want to read:

    http://blogs.technet.com/markrussinovich/archive/2008/07/21/3092070.aspx

    Yes, its long and technical, but Mark Russinovich knows what he’s talking about.

  10. Cereal says:

    One day, they upgraded the PCs in our office to 4GB.  Since we’re running XP 32-bit, some of us were chagrined to discover that only 3.25 GB of it is usable.

    My coworker said, "This is why I miss the more elegant architectures, like VAX."

    This led to a hot debate in which it was revealed, unsurprisingly, that <a href="http://www.compaq.com/alphaserver/vax/archive/vax7000.html">VAX topped out at under 4GB too</a>.

  11. Peter says:

    *sigh*

    It’s 2009 and we’re _still_ worrying about this stuff? It’s long past time that the world moved on to 64-bit now this 4G thing is becoming a real limit.

    At least it would mean people wouldn’t have to ask these questions any more :)

  12. Yuhong Bao says:

    "It’s 2009 and we’re still worrying about this stuff? It’s long past time that the world moved on to 64-bit now this 4G thing is becoming a real limit."

    Well, we will have to worry about things like PAE as long as a 32-bit version of Windows exists.

    "When I’ll get around to it, I’ll compare Vista x86 SP1 HAL and kernel with their Win2008 counterparts. I’m curious how much different they are."

    You will see the code that Windows uses to set it’s memory limits by edition.

  13. Yuhong Bao says:

    "And client Vista x64 does just that."

    I know, I am asking Vista x86 to do that as well via PAE.

  14. Yuhong Bao says:

    BTW, I was told by Geoff Chappell that this page will be available in the future that will have more info on this issue:

    http://www.geoffchappell.com/notes/windows/license/memory.htm

    (currently it is 404)

  15. Yuhong Bao says:

    "It should be possible for Windows to indicate "Hey, you actually have 4GB of RAM and if you went 64-bit you could use it all" vs "You may have fitted 4GB, but the chipset doesn’t support mapping it anywhere useful, so that’s a write off""

    Yep, combine this with true PAE support in client versions of 32-bit Windows, and it would be perfect.

Comments are closed.