Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

I've an Asus U31SD Notebook with an i5-2430M CPU. The Asus site says that the maximum RAM is 8 GB, but Intel's says my CPU supports 16 GB. What is the maximum RAM I can use on this system under Ubuntu?

share|improve this question
2  
To sum up what everyone is saying, your notebook can only use 8GB of RAM, due to the limitations of your motherboard. You can verify this by looking at this question: askubuntu.com/questions/140322/… –  reverendj1 May 25 '12 at 14:00
    
to everyone, i would like to point out that the memory producing company "corsair" has a memory locator that can tell you generally what the max amount of RAM your system can use is. You can also go read the tech sheets for your model system by searching for them online, it'll tell you the max RAM you can use. –  Thomas W. May 25 '12 at 19:10
    
@The Lord of Time: any link? –  0xC0000022L Mar 11 '13 at 17:46
    
Corsair Memory Finder/Configurator for the system referenced in the question: www2.corsair.com/configurator/… || Corsair Memory Finder (start page): corsair.com/us/learn_n_explore (They will advertise their products, but I can use this as a general base for finding semi-accurate specs for max-memory –  Thomas W. Mar 11 '13 at 17:54
add comment

6 Answers 6

The limit is actually between your hardware (Motherboard memory support and amount of slots in it) and the version of Ubuntu (32 Bit, 32 Bit + PAE, x32ABI, 64 Bit)

If you have a motherboard that supports a maximum of 4GB, it does not matter if you use 32 Bit, 32 Bit PAE or 64 Bit since you will have a hardware limit of 4GB.

But if you buy a motherboard that supports a higher amount of memory, you can play around with the versions of Ubuntu, which have the following maximum supported memory:

Ubuntu 32 Bit - 4GB RAM

Ubuntu 32 Bit + PAE (Physical Address Extension) - 64GB RAM

Ubuntu x32ABI - 4GB RAM (This is for 32 Bit architecture modified with 64 Bit enhancements running on 64 Bit hardware. It is not yet available.)

Ubuntu 64 Bit - A LOT! (Actually 2^64) but because of hardware limits and real world computers the limit is around 1TB ( 1024GB RAM)

So the question about memory limit should be used when you are using more than 4GB of RAM. In this case you would need, either 32 Bit PAE or 64 BIT which support really big memory sizes.

Also note that if you have for example 4GB right now, and you buy 16GB of ram, there is no need to reinstall Ubuntu or do any changes. Just change the memories and Ubuntu should read and work with them out of the box. No configuration necessary. If you have 32 Bit with 4 GB RAM and you install 16GB or RAM, Ubuntu will automatically change from 32 Bit to 32 Bit PAE. I can vouch for this since I moved from 4GB to 16 GB in the beginning of this year.

Here is a link to a very good explanation for Ubuntu about memory in 32/64: https://help.ubuntu.com/community/32bit_and_64bit#Memory

UPDATE - Forgot to add that some motherboards have BIOS updates that enable, correct or enhance the maximum memory supported. For example, some Intel motherboards in the past had problems working with the maximum they supported. A BIOS update fixed this. Other motherboards had support for 4GB because of a BIOS problem, after upgrading they had support for more than 4GB.

Also comparing the Maximum supported memory for the CPU and the Motherboard, the Maximum you can have is the Minimum of any of them. So for example:

CASE 1
CPU Maximum Supported Memory - 16GB
Motherboard Maximum Supported Memory - 8GB
Your Maximum Supported Memory - 8GB (Because is the lowest value between the CPU and Motherboard)

CASE 2
CPU Maximum Supported Memory - 16GB
Motherboard Maximum Supported Memory - 32GB
Your Maximum Supported Memory - 16GB (Because is the lowest value between the CPU and Motherboard)

CASE 3
CPU Maximum Supported Memory - 16GB
Motherboard Maximum Supported Memory - 64GB
Your Maximum Supported Memory - 16GB (Because is the lowest value between the CPU and Motherboard)

The reason behind this Memory Limit relation to the CPU is because of technical modifications by Intel with the latest Core CPUs.

So in your case, you have a motherboard that supports 8GB and a CPU that supports 16GB. This means the maximum you can have is 8GB which you can use depending on the amount of slots in the motherboard. In that Asus you have 2 Slots, which means you can have two 4GB of RAM to complete the Maximum of 8GB.

More Info about x32abi:

KernelNewbies - http://kernelnewbies.org/Linux_3.4#head-039c9d273884c9639937c10d68b4a3214869eb4b

LWN - https://lwn.net/Articles/456731/ (Recommend reading comments for easy to learn explanations about memory limit)

Google - http://sites.google.com/site/x32abi/

Lastly, since Ubuntu 12.04, all 32 Bit versions of Ubuntu come with PAE activated by default so all 32 Bit will support a maximum of 64 GB of RAM. In case you are using 12.04+ and want to know which architecture to use, you now know that you can use any of them as long as you follow some recommendations:

  • If you have 512 MB of RAM or less it is highly recommended to use 32 Bit

  • If you have less than 4 GB of RAM but more than 512 MB it is recommended to use 32 Bit (But you can still use 64 Bit)

  • If you have 4 GB of RAM it is recommended to use 32 Bit (But you can still use 64 Bit)

  • If you have between 4 GB or RAM and 64 GB of RAM you can use either 32 Bit or 64 Bit, but it is recommended to use 64 Bit.

  • If you have more than 64 GB of RAM you need to use 64 Bit

share|improve this answer
    
Luis are you sure about the 4 GB limit in x32? This would be sad. I read in an article (german magazine) that x32 supports more than 4 GB. Also what about PAE? –  turbo May 26 '12 at 18:50
    
@turbo - That is a very good question that took me a while to find. I answer with 4GB because of this part of the explanation of "What is x32abi?": X32 ABI allows to run programs in 64-bit mode with 32-bit pointers. Since it works with 32 Bit pointers, this means that the maximum memory it can actually use to work with is 4GB. Of course, I do not know if there is a x32abi PAE mode but since it is a way to execute 32 Bit programs to take some of the advantages of 64 Bit without using double the ram for tasks I concluded that it is limited by 32 Bit to 4GB of ram. –  Luis Alvarado May 26 '12 at 19:23
1  
Actually the limit for 64 bit is 2^48 bytes, and x32 is the same, just limited to 4 GB per process, for x32 processes. x32 runs a 64 bit kernel, so it can run some full 64 bit programs, but x32 builds most programs to only use 32 bits. –  psusi Jan 8 '13 at 2:32
add comment

For 32 bit the theoretical limit is 2^32 = 4096 MB, but from Ubuntu 12.04 on the PAE (Physical Address Extension) is turned on by default with a limit of 2^36 = 64 GB.

For 64 bit it should be 2^64 = 16 777 216 TB (yes that's Terabyte) theroretically. In reality the amount of RAM is limited to 2^48 aka 256 TB of RAM.

Since the theoretical limits can't really be reached in a normal laptop the actual limitation is the amount memory slots (normally 1-2) in your notebook and the support by the chipset. 8-16 GB is realistic here if you're willing to pay serious money for 8 GB modules.

share|improve this answer
    
So I can safely buy 2x 8gb modules and expect them to work? (I'm running 64bit, currently with 8gb ram) –  crond May 25 '12 at 12:32
    
Well safely ... ;P Other Notebooks with the Intel HM65 Express Chips do support 16 GB (Asus G74SX-TZ293V) so yes. –  turbo May 25 '12 at 13:12
add comment

I just bought an extra 8GB to pop in my U31SD, for 12GB total. Despite the Asus spec page saying 8GB is the limit, this Works fine. Passed memtest86 and is visible to 64bit Ubuntu.

I have the latest bios update installed, not sure if that makes any difference.

FYI, output of sudo dmidecode -t 16 indicates Maximum Capacity: 16 GB.

share|improve this answer
add comment

It is a restriction on the motherboard not on the CPU. The CPU may be able to support up to 16GB but if the motherboard can only take 8GB then that's your limit.

In Ubuntu if you're running 32-bit then your limit is 4GB and if you're running 64-bit it's much higher (can't remember for certain but it's way way above 16GB.

But you will always be restricted by your hardware. You must always compare the motherboard limit and the CPU limit and take the lowest value as the PC's limit.

share|improve this answer
add comment

In your specific case, 8 GB is due to your motherboard not supporting any more than that amount of RAM.

But Ubuntu itself supports 4 GB max for 32 bit , 64 GB on 32-bit PAE and 128 GB on 64 bit (although theoretically the cap is much higher for 64 bit).

share|improve this answer
add comment

there were many questions what determines size of a pointer. basically as a rule of thumb you can say this is processor architecture,

x86 -> 4 bytes pointer -> can address 4,294,967,296 locations = 4GB (it is the limit)

x64 -> 8 bytes pointer -> can address 1.84467440737e+19 locations (it is the limit, big, eh)

To address 8GB of RAM you need 8,589,934,592 mappings and pointer of size 4 bytes cannot address all possible values. so this is why I cannot have more than 4GB RAM on x86 architecture.

There are some other possibilities though:

Amount of RAM is not limited by the architecture (32 or 64 bit). Architecture only decides how much memory can be addressed at a time, by the OS and the programs running on it. On a 32-bit machine, that is, a machine with 32-bit wide memory bus, the OS and the programs can "see" only 4 GB of memory. But that doesn't mean there is only 4 GB of RAM. If the manufacturer has provided for it, you can have 16 GB or 4x4 GB of RAM. In that case, there will be 2 more "hidden" address lines and also there'd be hardcoded logic to decide the levels of those 2 lines, thus selecting any of the available 4 GB RAMs - 00 01 10 11 . These "hidden" address bits are not used by the software layers, so for these layers, they can only use a 4-byte pointer. The number of these "hidden" address lines decides by how much you can extend your RAM.

This is just one example. It depends on the vendor, how they decide to provide for the extra RAM.

see also:

In the usual case, a pointer is large enough to hold more addresses than there are units of memory in the system. This introduces the possibility that a program may attempt to access an address which corresponds to no unit of memory, either because not enough memory is installed (i.e. beyond the range of available memory) or the architecture does not support such addresses. The first case may, in certain platforms such as the Intel x86 architecture, be called a segmentation fault (segfault). The second case is possible in the current implementation of AMD64, where pointers are 64 bit long and addresses only extend to 48 bits. There, pointers must conform to certain rules (canonical addresses), so if a noncanonical pointer is dereferenced, the processor raises a general protection fault.

On the other hand, some systems have more units of memory than there are addresses. In this case, a more complex scheme such as memory segmentation or paging is employed to use different parts of the memory at different times. The last incarnations of the x86 architecture support up to 36 bits of physical memory addresses, which were mapped to the 32-bit linear address space through the PAE paging mechanism. Thus, only 1/16 of the possible total memory may be accessed at a time. Another example in the same computer family was the 16-bit protected mode of the 80286 processor, which, though supporting only 16 MiB of physical memory, could access up to 1 GiB of virtual memory, but the combination of 16-bit address and segment registers made accessing more than 64 KiB in one data structure cumbersome. Some restrictions of ANSI pointer arithmetic may have been due to the segmented memory models of this processor family.[citation needed]

In order to provide a consistent interface, some architectures provide memory-mapped I/O, which allows some addresses to refer to units of memory while others refer to device registers of other devices in the computer. There are analogous concepts such as file offsets, array indices, and remote object references that serve some of the same purposes as addresses for other types of objects.

(more here)

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.