Top 6 commands to check the memory usage on Linux

Do you find that your Linux installation has been running slowly lately? If you do, then you need to test which programs or processes are using the system resources. There are, of course, some processes that go rouge and run in the background without your knowledge.

In this article, we shall list top commands to check the memory usage on Linux. The commands should help you understand the memory consumption of the programs and processes. System administrators controlling remote Linux systems may need to use the command-line approach. You should then be able to take necessary action like disabling the process and switching the program with another one that’s compatible with your system.

Commands to check the memory usage on Linux

For the tutorial, we are going to use Ubuntu 19.10. If you are using a different version or another distro, the guide should still work as these are not distro dependent, except the smem and htop tool whose installation is distro dependent.

1. Top

top is an easy way to check the memory usage on your system. It is also one of the most used commands because it offers an interactive, dynamic, and real-time showcase of the running process.

Launch the terminal and use the command:


Let’s see it in action below.

top listing the processes dynamically

As you can see that it is ample information about each process, including its PID, User, RES, Command, Time+, and so on.

If you want only to show only ten processes, then use the command below.

top -b | head - 10

2. Free

free is yet another useful and popular way to check memory consumption. It gives you an eagle-eye view of the memory on your machine. It shows used and free swap and physical memory. Moreover, it also indicates caches and buffers by the kernel.

The free command extracts the information from the “/proc/meminfo” file.

To run the command, type:

free - m

Showing system’s memory using free

As you can, it has multiple columns, including total, used, free, shared, buff/cache, and available. These columns are filled with information corresponding to Mem and Swap.


If you want more detail information about your system memory consumption and utilization, then you can check out the /proc/meminfo file, which contains various real-time memory usage information. It is a virtual file, as well.

To check its contents and learn about memory usage, you need to use the command below.

cat /proc/meminfo

Learning about system memory using /proc/meminfo file


If you want to learn about virtual memory, then you need to use the vmstat command. It is widely used to report virtual memory statistics. By using the command, you can know about memory, processes, block IO, paging, CPU, and disks.

The command for it is as below.


Using vmstat to learn about virtual memory

As you can see, the output can be a little confusing. The six significant parts of the output include the following, procs, memory, swap, io, system, and CPU. This means that it offers information about the six aspects of your machine.

In proc, it lists two parameters:

  • r: It shows the runnable processes number including waiting or running for run time
  • b: It shows the processes that are in the uninterruptible setup

In the case of memory, it lists the following parameters:

  • swpd: virtual memory used
  • free: idle memory
  • buff: memory used as buffers
  • cache: memory used as a cache
  • inact: inactive memory
  • active: active memory

If you look at the swap, you will find the two parameters:

  • si: memory swapped from disk
  • so: memory swapped to disk

Next, we have IO.

  • bi: blocks from block devices(received)
  • bo: blocks to block devices (sent)

The second last section consists of the following:

  • in: total number of interrupt
  • cs: total number of context switches/second

Lastly, CPU list the following:

  • us: non-kernel core time spent
  • sy: kernel code time spent
  • id: idle time spent
  • wa: time spent waiting for IO
  • st: time used from the virtual machine


The smem command is useful for generating numerous reports on Linux systems. It doesn’t come pre-installed with the Ubuntu distro version we are using. To install it, you need to use the following:

sudo apt-get install smem

So, what exactly smem offers?

It is a tool that provides various memory-based reports. With it, you can generate Unique Set Size(USS), Resident Set Size(RSS), and Proportional Set Size(RSS) reports.

Each report has its value and offers something unique. Let’s discuss them below.

  • USS: List all the unshared memory
  • RSS: List a standard physical memory measure
  • PSS: List memory used by applications and libraries in the virtual memory system.

Note: Only use it if you have Python 2.x version installed. It should throw an error if you use a Python 3.x version or above.


The last one we are going to discuss is htop. Unlike other commands, it offers an interactive view of the processes. It is kind of similar to top but provides a better view and control over the information. For instance, it lets you scroll horizontally and vertically.

To install it, you need to use the following command:

sudo apt install htop

Once installed, you need to type htop in command prompt to run it.

Interactive htop view


This leads us to the end of our article on top commands to check the memory usage on Linux. We hope you found out the one best suited for you. Do you find any other commands that are important and not mentioned here? What are the benefits that it has? Use the form below to let FOSSLinux readers know.

Leave a comment

Your email address will not be published. Required fields are marked *