How To Plan For Memory Expansion On a Linux Host

This is an user contributed article.

When it is time to upgrade the memory on a Linux host, it is important to understand the existing memory information of the system, which will help to plan the memory upgrade appropriately without opening server chassis (especially, when you have Linux rack mount server).

What is the current total RAM used in the system?

This can be obtained using free command or from the /proc/meminfo file as shown below. In this example, the current RAM is 1GB.
# free
Sample output:

             total       used       free     shared    buffers     cached
Mem:       2074016    2002592      71424          0     480908     937296
-/+ buffers/cache:     584388    1489628
Swap:      1951888      79116    1872772

You can also display memory ram, info using /proc file, enteR:
# grep MemTotal /proc/meminfo
Sample output:

MemTotal:      1034624 kB

What is the maximum RAM supported by the system?

You can use dmidecode command to query all memory related information from the system DMI table. In this example, the maximum RAM supported by the system is 8 GB as shown below.

# dmidecode -t 16
Sample output:

# dmidecode 2.9
SMBIOS 2.3 present.
Handle 0x1000, DMI type 16, 15 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 8 GB
Error Information Handle: Not Provided
Number Of Devices: 4

How many memory slots are available for expansion?

We know the current memory of the system is 1G. Is this 1 x 1G (or) 2 x 512MB (or) 4 x 256MB? This can be figured out as shown below. In the example below, the system has 4 memory slots and it has 2 x 512MB. If you have to expand upto 8GB of maximum RAM, you need to remove the 512MB from slot 1 and 2, and use 2GB RAM on all the 4 memory slots. This information will give sufficient ideas to plan for RAM expansion accordingly. # dmidecode -t 17 | grep Size
Sample output:
        Size: 512 MB
        Size: 512 MB
        Size: No Module Installed
        Size: No Module Installed


dmidecode can also be used to identify details about several other hardware related information. dmidecode command reads the systems DMI table for the hardware and BIOS information. DMI stands for Desktop Management interface and SMBIOS stands for System Management BIOS.

Distributed Management Task Force maintains the DMI and SMBIOS specification:

🐧 Get the latest tutorials on Linux, Open Source & DevOps via RSS feed or Weekly email newsletter.

🐧 5 comments so far... add one

CategoryList of Unix and Linux commands
Disk space analyzersdf ncdu pydf
File Managementcat cp mkdir tree
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network UtilitiesNetHogs dig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
5 comments… add one
  • moko Jul 24, 2008 @ 11:20

    Cool… I was googling the web yesterday for this info and couldn’t find it! and voila.. all written! thanks 🙂

  • devidas Jul 24, 2008 @ 14:34

    i was planning to expand my ram memory.. had been thinking to buy new ram and thanks for the article it really helped in getting to know the stuff inside.

  • Guille Jul 24, 2008 @ 18:59

    Hello ev1;

    great articule and great command, but in several of my server im receiving on the output ie:

    [root@server1 ~]# dmidecode –type 17
    –type: No such file or directory

    [root@server1 ~]# dmidecode –type 11
    –type: No such file or directory

    neither with;

    [root@server1 ~]# dmidecode processor
    processor: No such file or directory

    HOw can i fix it ?, i was googling but nothing


  • Krzysztof Wilczynski Aug 18, 2008 @ 22:45

    Dear Guille,

    You should use either -t or –type, but never -type with single dash (that is indeed incorrect). You can see dmidecode’s help screen by executing it with –help as an argument (alternatively, you can read the manual page: man dmidecode). If you are unsure about what to do then simply execute dmidecode without any arguments at all.

    Kindest regards,

  • Jared Nov 26, 2008 @ 2:05

    Very useful stuff – any way to differentiate between SDRAM, DDR, DDR2, DDR3?

Leave a Reply

Your email address will not be published.

Use HTML <pre>...</pre> for code samples. Still have questions? Post it on our forum