How to Check Memory Usage in Linux

Posted 

3 min read

When troubleshooting system or application slowdown or misbehavior, one of the first things to check is the system memory usage.

This article explains how to check RAM usage in Linux using several different commands.

free Command

free is the most commonly used command for checking the memory usage of a Linux system. It displays information about the total, used, and free memory.

Generally, free is invoked with the -h option that means print the output in human-readable format:

free -h
              total        used        free      shared  buff/cache   available
Mem:           3936        1087         252         130        2596        2427
Swap:             0           0           0

Here’s what each column mean:

  • total - The total amount of memory that can be used by the applications.
  • used - Used memory. It is calculated as: used = total - free - buffers - cache
  • free - Free / Unused memory.
  • shared - This column can be ignored; it is shown only for backward compatibility.
  • buff/cache - The combined memory used by the kernel buffers and page cache and slabs. This memory can be reclaimed at any time if needed by the applications.
  • available - An estimate of the memory that is available for starting new applications, without swapping.

The free command prints information for the physical memory and the system swap .

top Command

top is a command-line utility that displays real-time information about the running processes. It also shows the system summary, including memory usage.

To invoke the command simply type top:

free -h

The output will look something like this:

The header of the output includes information about the system’s total, free, and used physical and swap memory.

The %MEM column provides information about the used share of the available physical memory for each running process.

/proc/meminfo

The simplest way to check the RAM memory usage is to display the contents of the /proc/meminfo virtual file. This file is used by the free, top, ps , and other system information commands.

Use less or cat to view the contents of the /proc/meminfo file:

cat /proc/meminfo

The file includes a large amount of information about the systems memory and swap usage:

MemTotal:        4030592 kB
MemFree:          401804 kB
MemAvailable:    2507504 kB
...

The information from the /proc/meminfo file can be parsed and used in shell scripts.

ps_mem Script

ps_mem is a Python script that reports per-program RAM memory usage. It work with both Python 2 and 3 and can be installed with pip:

sudo pip3 install ps_mem

Running ps_mem requires administrator privileges:

sudo ps_mem

The output will include the memory usage of each running program in ascending order:

 Private  +   Shared  =  RAM used	Program
...
 11.9 MiB +  20.2 MiB =  32.1 MiB	nginx (4)
  8.2 MiB +  42.4 MiB =  50.6 MiB	systemd-journald
 55.8 MiB + 307.2 MiB = 363.0 MiB	php-fpm7.4 (6)
233.9 MiB + 234.0 MiB = 467.9 MiB	redis-server
578.2 MiB + 578.6 MiB =   1.1 GiB	mysqld
---------------------------------
                          2.2 GiB
=================================

This script is useful when you want to find out which running program is taking most of your system memory.

Conclusion

We have shown you several commands that you can use to check the system memory usage.

If you have any questions or remarks, please leave a comment below.