You want to upgrade the Memory to your newly purchased Computer or your old system, and you have no idea about the maximum supported RAM by your system, what will you do? Of course, you can get the specifications from the system catalog, manuals, and also from the system vendor's website. But, it is not necessary. Here is two methods to find out maximum supported RAM in Linux from command line.
Please note that this is not about how much RAM the Linux OS supports, but how much your motherboard supports.
1. Find Out Maximum Supported RAM In Linux using Dmidecode
From the man pages, Dmidecode is a tool for dumping a computer’s DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system’s hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision. Using Dmidecode, you can retrieve this information without having to probe for the actual hardware.
Dmidecode is available in most Linux distribution's default repositories.
To install it in Arch Linux and its derivatives, run:
$ sudo pacman -S dmidecode
On Debian/Ubuntu/Linux Mint:
$ sudo apt-get install dmidecode
On Fedora / RHEL / CentOS / AlmaLinux / Rocky Linux:
$ sudo yum install dmidecode
Or,
$ sudo dnf install dmidecode
On SUSE/openSUSE:
$ sudo zypper in dmidecode
Once Dmicode installed, run the following command to find out maximum supported RAM by your system:
$ sudo dmidecode -t 16
Sample output:
# dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.6 present. Handle 0x0014, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 2
As you see in the above output, the maximum supported RAM size is 16 GB, and the number of available RAM slots (DIMM) are 2.
You might want to check the currently installed RAM size. To do so, run:
$ sudo dmidecode -t 17
Sample output:
Getting SMBIOS data from sysfs. SMBIOS 2.6 present. Handle 0x0017, DMI type 17, 28 bytes Memory Device Array Handle: 0x0014 Error Information Handle: 0x0000 Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: DIMM Set: None Locator: DIMM_B Bank Locator: BANK 2 Type: Unknown Type Detail: None Speed: Unknown Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Handle 0x0015, DMI type 17, 28 bytes Memory Device Array Handle: 0x0014 Error Information Handle: 0x0000 Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: SODIMM Set: None Locator: DIMM_A Bank Locator: BANK 0 Type: DDR3 Type Detail: Synchronous Speed: 1067 MHz Manufacturer: 014F Serial Number: 00092AF2 Asset Tag: 54114000 Part Number: JM1066KSN-4G Rank: Unknown
As you see in the output, my system has two DIMM slots and 4 GB RAM is installed in one slot. My RAM type is DDR3 and speed is 1067 MHz. The other one is empty.
Alternatively, run any one of the following command to display your system's Memory details.
$ sudo dmidecode -t memory
Sample output:
# dmidecode 3.0 Getting SMBIOS data from sysfs. SMBIOS 2.6 present. Handle 0x0014, DMI type 16, 15 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 2 [...]
To view the complete system hardware details, just run:
$ sudo dmidecode
Please note that some chipset and BIOS may not provide accurate information. However, you might get quite accurate details from server grade hardware.
For more details, refer man pages.
$ man dmidecode
Suggested read:
2. Find Maximum Supported RAM In Linux using Memconf
Memconf is a simple perl script that displays memory modules installed in a Linux, Unix, Sun/Oracle Solaris, and HP-UX system.
Make sure you have installed perl before using this script.
To install perl on Arch Linux and its derivatives, run:
$ sudo pacman -S perl
On Debian / Ubuntu / Linux Mint:
$ sudo apt-get install perl
On RHEL / Fedora / CentOS / Scientific Linux:
$ sudo yum install perl
Or,
$ sudo dnf install perl
After installing perl, download memconf script using command:
$ wget https://sourceforge.net/projects/memconf/files/V3.12/memconf-v3.12.pl.gz
Extract the zip using command:
$ gunzip memconf-v3.12.pl.gz
Finally, run memconf script as shown below.
$ sudo perl memconf-v3.12.pl
Sample output:
memconf: V3.12 07-Oct-2016 http://sourceforge.net/projects/memconf/ hostname: sk Dell Inc. Inspiron N5050 (Dual-Core Hyper-Threaded Intel(R) Core(TM) i3-2350M @ 2.30GHz) Memory Error Correction: None Maximum Memory: 16384MB (16GB) DIMM_A BANK 0: 4096MB 1067MHz Synchronous DDR3 SODIMM, AMD JM1066KSN-4G empty memory sockets: DIMM_B BANK 2 total memory = 4096MB (4GB)
As you see above, the maximum supported memory is 16 GB.
For more details, refer memconf homepage.
Reference:
6 comments
Great tip over there. Thanks.
Something is seriously wrong here. I KNOW I have 32Gb installed, yet this command tells me I only have 8Gb installed and can go up to only 16Gb.
Getting SMBIOS data from sysfs.
SMBIOS 2.5 present.
Handle 0x0032, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 16 GB
Error Information Handle: Not Provided
Number Of Devices: 4
This is the currently installed RAM stats
Getting SMBIOS data from sysfs.
SMBIOS 2.5 present.
Handle 0x0034, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0032
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM0
Bank Locator: BANK0
Type: Other
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Manufacturer0
Serial Number: SerNum0
Asset Tag: AssetTagNum0
Part Number: PartNum0
Handle 0x0036, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0032
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM1
Bank Locator: BANK1
Type: Other
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Manufacturer1
Serial Number: SerNum1
Asset Tag: AssetTagNum1
Part Number: PartNum1
Handle 0x0038, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0032
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM2
Bank Locator: BANK2
Type: Other
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Manufacturer2
Serial Number: SerNum2
Asset Tag: AssetTagNum2
Part Number: PartNum2
Handle 0x003A, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0032
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM3
Bank Locator: BANK3
Type: Other
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Manufacturer3
Serial Number: SerNum3
Asset Tag: AssetTagNum3
Part Number: PartNum3
I then used the following command to check…
sudo lshw -class memory
*-firmware
description: BIOS
vendor: American Megatrends Inc.
physical id: 0
version: 2101
date: 12/02/2014
size: 64KiB
capacity: 1984KiB
capabilities: isa pci pnp apm upgrade shadowing escd cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb ls120boot zipboot biosbootspecification
*-cache:0
description: L1 cache
physical id: 5
slot: L1-Cache
size: 512KiB
capacity: 512KiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 6
slot: L2-Cache
size: 2MiB
capacity: 2MiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 7
slot: L3-Cache
size: 6MiB
capacity: 6MiB
clock: 1GHz (1.0ns)
capabilities: pipeline-burst internal write-back unified
configuration: level=3
*-memory
description: System Memory
physical id: 32
slot: System board or motherboard
size: 32GiB
*-bank:0
description: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-02-05 00:26+0000Last-Translator: Andi Chandler Language-Team: English (United Kingdom) MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2016-06-27 17:08+0000X-Generator: Launchpad (build 18115) Synchronous 1333 MHz (0.8 ns)
product: PartNum0
vendor: Manufacturer0
physical id: 0
serial: SerNum0
slot: DIMM0
size: 8GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:1
description: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-02-05 00:26+0000Last-Translator: Andi Chandler Language-Team: English (United Kingdom) MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2016-06-27 17:08+0000X-Generator: Launchpad (build 18115) Synchronous 1333 MHz (0.8 ns)
product: PartNum1
vendor: Manufacturer1
physical id: 1
serial: SerNum1
slot: DIMM1
size: 8GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:2
description: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-02-05 00:26+0000Last-Translator: Andi Chandler Language-Team: English (United Kingdom) MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2016-06-27 17:08+0000X-Generator: Launchpad (build 18115) Synchronous 1333 MHz (0.8 ns)
product: PartNum2
vendor: Manufacturer2
physical id: 2
serial: SerNum2
slot: DIMM2
size: 8GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:3
description: DIMMProject-Id-Version: lshwReport-Msgid-Bugs-To: FULL NAME POT-Creation-Date: 2009-10-08 14:02+0200PO-Revision-Date: 2012-02-05 00:26+0000Last-Translator: Andi Chandler Language-Team: English (United Kingdom) MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2016-06-27 17:08+0000X-Generator: Launchpad (build 18115) Synchronous 1333 MHz (0.8 ns)
product: PartNum3
vendor: Manufacturer3
physical id: 3
serial: SerNum3
slot: DIMM3
size: 8GiB
width: 64 bits
clock: 1333MHz (0.8ns)
So… something is wrong somewhere!!!
Why don’t you just write the limits for each version of Linux?
this isnt about how much linux supports, its about how much your motherboard supports.
So is “maximum ram” means per slot or for total (both slots) combined?
All slots combined.