Installed memory ≠ usable size?

I was configuring my BIOS after installing 2 GB of RAM, and I saw this:

System memory
Installed size : 4096MB
Usable size    : 3584MB

I have a 64-bit OS (Ubuntu 9.04 64-bit), so does that mean the motherboard (ASUS M3A78-T) doesn't support more than 4 GB of addressing?

You installed 2 GB and you're wondering if "only" 4 is supported? Strange question.

Are you concerned about the "usable size"? This is most likely video RAM and the space allocated by the BIOS.

If it was me, I would grab a linux distro that has a memory checker like knoppix.net . Next run a memory test. This will give you the allot better idea on the status of the RAM. Most MB only support X many gig, and have flash upgrades. I highly recommend having someone who knows what they are doing to do most motherboard flashes. Seen my share of DOA boards from flashes that went wrong.

I had 2 GB installed and I was installing 2 GB more. Only 3.5 showed up, which should not be the case if the computer is using "64-bit" (actually usually just 48-bit?) addressing.

If you install a 32-bit with PAE kernel, you'll be able to see all the memory also.

No, I think the problem is the video ram.

If I can only address 32 bits, then clearly the 512 MB loss is for the video RAM. But if I could address 48 bits, that wouldn't be a problem. Right?

Or am I missing something?

You have only 4 GB of RAM installed. You can't get more RAM than what you have installed. If the OS sees 3.5 GB, it correctly sees how much is physically available to it.

A single process will have only 2 GB available to it unless you install some kernel patches which move the shared-memory boundary. On the other hand, if you use shared memory (for postgres, oracle, maybe mysql, large virtual ram disk), you can utilize all of the memory currently in your system.

If you want to expand another gigabyte or so, you'll need PAE or a 64-bit OS.

I have a 64-bit OS! That was in my opening post.

When I had only 2 GB, it showed my RAM as 2048 MB. After adding 2 GB more, it shows 3584 MB rather than the expected 4096 MB.

What is the "it" that shows 3584 MB?

The docs here says it can support 16 GB.

The BIOS, for one. gnome-system-monitor shows the same.

Well, if the BIOS shows 3.5 GB, the problem might be the BIOS. Consider flashing a new BIOS. But first, I'd make sure the problem isn't graphics-card memory, which you haven't assured me it isn't.

I imagine that I do that 512 MB of graphics card memory. But if I can address "64-bits" (actually most only handle only 48 bits at the moment) then this should not reduce the 4 GB.

Right. You were talking to the "Geek Squad" at BestBuy, werent you?

No, why would you say that? :confused: I bought the components for the computer at MicroCenter and assembled it myself. I haven't been to a BestBuy for ages.

I can't tell how you intended the statement since your intonation doesn't come through the text. Are you doubting my statement on 64-bit addressing? My understanding is that AMD64 systems set 16 memory bits (actually I think 16 of the middle bits, rather than just the 16 upper bits) to 1, limiting the actual space that can be accessed to 2^(64-16) = 2^48 = 64 terabytes. Let me try to Google up a source,

OK, I have one:
EmbeddedDeveloper.com - x86 - AMD64 (64-bit)
Actually this gives a limit of 48 bits of virtually-addressed memory and only 40 bits (1 terabyte) of physical memory.

Of course these are all better than Vista's 37 bits (128 GB for Vista Business), though I think that's an artificial restriction.

It seems like you don't have a real problem, and that you were asking a theoretical question -- like fact-checking GeekSqaud personnel.

Do you or do you know what's eating your top in .5 GB of memory? Can you check if it's the video?

A 32-bit processor can natively and directly address 4 GB of memory. Since the 8086 architecture allowed for a "segment" address combined with an actual memory pointer, the x86 architecture theoretically maintains the ability to address more memory than this.
I doubt it hard to believe that a 64-bit chip would be able to address more memory.

I'm currently eating all of my memory and would like to get the last half-gig. What's more, I'd like to know if I'd be able to double the memory further (buying 4x2GB, since my current setup is full at 4x1GB). So no, it's not theoretical.

I don't understand why we don't understand each other on this point. I have a 64-bit processor and a 64-bit operating system; I should have no trouble addressing 128 GB. Video memory only reduces currently-available memory if you've used up your addressing limit. So when I had 2 GB and was uncontroversially below my addressing limit, I could see all 2 GB (precisely 2048 MB). Video mapping did not reduce the memory at all.

But now 512 MB are not showing up. The possibilities, as I see them:

  1. The OS can only address 32 bits, so only 3.5 GB can be used.
  2. The processor can only address 32 bits, so only 3.5 GB can be used.
  3. The motherboard can only address 32 bits, so only 3.5 GB can be used.
  4. The BIOS is misconfigured to address only 32 bits, so only 3.5 GB can be used.
  5. The BIOS is misconfigured in some other way that causes only 3.5 GB to show up.
  6. The RAM is bad in some bizarre way that causes only 3.5 GB to be usable.
  7. 4 GB are available, but for some reason the tools I'm using (ps, gnome-system-monitor, the BIOS) only see 3.3 to 3.5 GB.
  8. Something else is wrong.

#1 and #2 clearly don't apply to me: the OS is 64-bit and the processor, a Phenom II, is also 64-bit. I don't think that #4 is possible. I've looked through the BIOS settings pretty carefully and didn't see anything, but I concede that #5 is possible. #6 and #7 seem absurd. #8 is always a possibility.

What do you think?

I know of no way to do this.

As I have an x86_64 (aka AMD64) processor rather than the classic x86, I don't think this is particularly relevant. Of course the microarchitecture is similar, but I don't think there's any disagreement as to the chip's ability to work with more than (say) 8 GB of memory.

I don't follow...?

Your BIOS is reporting 3.5 GB, so it has nothing to do with the OS. Theoretically, you can tell the kernel to see 4 GB of memory, and if it's addressable and physically there, it will find it. You can do this with the mem= parameter (modify lilo/grub.conf).

Where do you get this idea? Most video controllers use system memory. How much they use is usually configured in the BIOS. What BIOS do you have, and what's the version? This is reported on POST. You can also see it in BIOS setup. Changing video memory is almost always an option in BIOS setup. Perhaps this parameter reset itself when you added memory?

These are absurd! 32 bits can address 4 GB.

5. The BIOS is misconfigured in some other way that causes only 3.5 GB to show up.

Check video RAM usage.

6. The RAM is bad in some bizarre way that causes only 3.5 GB to be usable.

This is HIGHLY plausible. Perhaps by handling the sticks you have shorted out one or more chips. Or, perhaps one of your sticks is slower than the others and needs a slower refresh rate. Each stick has an ID, a frequency (or data rate) and a series of numbers after, like 3200-3-2-2-3. All yours should be the same. If not, you have to tell the BIOS to go with the larges value in each slot. For instance, if you have one stick that says (-3-2-2-4) and another that is (-3-3-2-3), you need (-3-3-2-4).

That's not what I'm talking about. This is memory that would show up as used, not memory that would fail to show up.

I'm talking about the "memory barrier":
Ask Dan: What's with the 3Gb memory barrier?
TabBlogger : The 3GB-not-4GB RAM problem
which is caused by addressing space being used, not for memory, but for an external resource. This does *not* affect systems with actual memory + resources <= addressing space.

A 32-bit system with a 512 MB of hardware resources* and 2048 MB of memory can use 2048 MB of memory.

A 32-bit system with a 512 MB of hardware resources* and 4096 MB of memory can use 3584 MB of memory.

  • PCI, BIOS, etc.

*sigh* No. This would be memory that doesn't show up. You are confusing memory usage of the OS with BIOS allocation. The BIOS might be allocating 512 MB for hardware, but if it supports a 64-bit OS and a 64-bit address space, then that should not be a problem. You are using a newer (2008 -- his article was in 2007 and referred to "old" motherboards) Motherboard, and it appears it can support this configuration.

Read this article here and you can see how to configure the BIOS for a bunch of things. It does not show video RAM allocation, but I'm sure you'll find it. When you have tuned it down to 128 MB RAM, and checked the memory size again, and if you're STILL missing 512 MB, then I'll eat my words. Ok?

Howdy folks!

This might not relate, but:

2 Years ago I had pretty much the same problem on one of my 8 puters at home:

Ubuntu 6 or 7, 64 bit, showed only 3.5 gb visible. Tried windows with PAE switch, same stuff as with windows 64 bit. Couldn't get my 4GB...

Went to the gigabyte's site, flashed the BIOS, and bang... I've got my 4GB all nice and shiny.
(I don't recommend flashing BIOS unless it fixes stuff you are actually having problem with since many things can go wrong. If you are desperate enough, give it a try.)

Btw - as Otheus said - check the BIOS settings.
As you probably know yourself, there's bunch of stuff to configure, might be there's some for RAM speed, etc that you missed or require manual setup.
Also - check motherboard manual, might be there's some jumper that needs placing on a different spot (as with overclocking the processor in some cases - but I've never seen something like it for RAM before).
Of course - be very, very careful if you do something like that since you might actually cause harm to the hardware (you probably know this, but it should be mentioned for those who don't and might be reading this article).

If you have a non-onboard graphics card I believe that the video-memory sharing allocation is not used since onboard videocard is auto-disabled in that case.

Hope any of this helped :wink:

Cheers,
Matt