Linux / Unix: Find Out Maximum RAM Supported By The Server BIOS and Motherboard

How do I find out the maximum RAM supported by the Dell, HP, IBM, Oracle/Sun or Intel/AMD server on a Linux or Unix-like operating systems without rebooting the server or opening the server case (chassis)?

Most modern server supports 16GB, 32GB, 64GB or more RAM and has 4 or more DIMM slots. To find out what is the maximum RAM system can support use any one of the following command as root user. This tip is useful for upgrading the server memory including memory type and make.

[donotprint][/donotprint][a] dmidecode command – It is a tool for dumping a computer’s DMI (some say SMBIOS) table contents in a human-readable format. Thanks to this table, you can retrieve this information without having to probe for the actual hardware.

[b] memconf perl script – A script displays memory modules installed in a system. It is supported on:

  1. Solaris (SunOS 4.X or 5.X) on SPARC
  2. Solaris 10 6/06 or later on x86 with /usr/platform/i86pc/sbin/prtdiag
  3. Linux on SPARC with sparc-utils and /dev/openprom
  4. Linux on x86 and x86_64 with kernel-utils or pmtools for dmidecode
  5. FreeBSD on x86 and x86_64 with dmidecode
  6. Most HP-UX systems with SysMgmtPlus (cprop) or Support Tools Manager (cstm)

dmidecode command syntax

The syntax is as follows:
# dmidecode -t 16
OR
# dmidecode |grep -i "Maximum Capacity:" | uniq
Sample outputs:

# dmidecode 2.11
SMBIOS 2.5 present.

Handle 0x0016, DMI type 16, 15 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 64 GB
	Error Information Handle: Not Provided
	Number Of Devices: 8

However, my old good home Debian Linux based server can support max 4GB ram only:
# dmidecode -t 16
Sample outputs:

# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x0008, DMI type 16, 15 bytes
Physical Memory Array
	Location: System Board Or Motherboard
	Use: System Memory
	Error Correction Type: None
	Maximum Capacity: 4 GB
	Error Information Handle: Not Provided
	Number Of Devices: 2

You can find out currently installed memory information (DIMM and its slots) by typing the following command:
# dmidecode -t 17
Sample outputs:

# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x000A, DMI type 17, 28 bytes
Memory Device
	Array Handle: 0x0008
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 2048 MB
	Form Factor: DIMM
	Set: None
	Locator: DIMM0
	Bank Locator: BANK0
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz (1.5 ns)
	Manufacturer: Manufacturer00
	Serial Number: SerNum00
	Asset Tag: AssetTagNum0
	Part Number: ModulePartNumber00

Handle 0x000C, DMI type 17, 28 bytes
Memory Device
	Array Handle: 0x0008
	Error Information Handle: Not Provided
	Total Width: Unknown
	Data Width: Unknown
	Size: No Module Installed
	Form Factor: DIMM
	Set: None
	Locator: DIMM1
	Bank Locator: BANK1
	Type: Unknown
	Type Detail: Unknown
	Speed: Unknown
	Manufacturer: Manufacturer01
	Serial Number: SerNum01
	Asset Tag: AssetTagNum1
	Part Number: ModulePartNumber01

Another output from one of my personal server:
# dmidecode -t 17
Sample outputs:

# dmidecode 2.11
SMBIOS 2.5 present.

Handle 0x0013, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0012
	Error Information Handle: No Error
	Total Width: 40968 bits
	Data Width: 41032 bits
	Size: 512 MB
	Form Factor: DIMM
	Set: 1
	Locator: J6G1
	Bank Locator: DIMM 0
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz
	Manufacturer: Kingston                                        
	Serial Number: 80CC2564
	Asset Tag: 00000903
	Part Number: 393930353332302D3030322E4130314C4600

Handle 0x0014, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0012
	Error Information Handle: No Error
	Total Width: 41480 bits
	Data Width: 41544 bits
	Size: 512 MB
	Form Factor: DIMM
	Set: 1
	Locator: J6G2
	Bank Locator: DIMM 1
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz
	Manufacturer: Kingston                                        
	Serial Number: 80CC1E64
	Asset Tag: 00000903
	Part Number: 393930353332302D3030322E4130314C4600

Handle 0x0015, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0012
	Error Information Handle: No Error
	Total Width: 41992 bits
	Data Width: 42056 bits
	Size: 512 MB
	Form Factor: DIMM
	Set: 1
	Locator: J6H1
	Bank Locator: DIMM 2
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz
	Manufacturer: Kingston                                        
	Serial Number: BCCCFD8D
	Asset Tag: 00000833
	Part Number: 393930353332302D3030322E4130314C4600

Handle 0x0016, DMI type 17, 27 bytes
Memory Device
	Array Handle: 0x0012
	Error Information Handle: No Error
	Total Width: 42504 bits
	Data Width: 42568 bits
	Size: 512 MB
	Form Factor: DIMM
	Set: 1
	Locator: J6H2
	Bank Locator: DIMM 3
	Type: DDR2
	Type Detail: Synchronous
	Speed: 667 MHz
	Manufacturer: Kingston                                        
	Serial Number: BCCCDF8D
	Asset Tag: 00000833
	Part Number: 393930353332302D3030322E4130314C4600

To get all info about the memory type:
# dmidecode -t memory
# dmidecode -t memory | less
# dmidecode -t memory | more

Sample outputs:

Image 01: dmidecode command displaying memory information on a Linux or Unix-like systems

memconf Perl script

You can download memconf here and run it as follows:

$ cd /tmp
$  wget http://liquidtelecom.dl.sourceforge.net/project/memconf/V3.08/memconf-v3.08.pl.gz
$ gunzip memconf-v3.08.pl.gz
# perl memconf-v3.08.pl -v

Sample outputs:

memconf:  V3.08 02-Jun-2015 http://sourceforge.net/projects/memconf/
hostname: dbmsyq05.nixcraft.net.in
Supermicro X7DBR-3 (Dual-Core Intel(R) Xeon(TM) 2000MHz)
Memory Error Correction: None
Maximum Memory: 65536MB (64GB)
DIMM1A Bank1: 2048MB 667MHz Synchronous DDR2 DIMM, 0000
DIMM2A Bank2: 2048MB 667MHz Synchronous DDR2 DIMM, 0000
DIMM3A Bank3: 2048MB 667MHz Synchronous DDR2 DIMM, 0000
DIMM4A Bank4: 2048MB 667MHz Synchronous DDR2 DIMM, 0000
empty memory sockets: DIMM1B Bank1, DIMM2B Bank2, DIMM3B Bank3, DIMM4B Bank4
total memory = 8192MB (8GB)
WARNING: ECC memory detected, but ECC is not enabled in the BIOS.

Another outputs from one of my server:
# perl memconf.v3.08.pl -v

Image 02: UNIX memconf utility in action

Another option is to visit your server or computer manufacturer website and find out the same info about the memory modules.

See also
  • Man page – dmidecode(8)
  • memconf project home page.

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.