Wesbytes Knowledge Base

Search our articles or browse by category below

How to Check memory usage on a Linux server

Last modified: June 28, 2022
You are here:
Estimated reading time: 4 min

Check memory usage on a Linux Server

i) cPanel/WHM

There are a few ways to check your memory usage of Linux Dedicated or Vitual Server in WHM or cPanel control panels. You may check the general overview of the server status via WHM > Server Information and WHM > Service Status, which also includes information about memory usage. For your reference:

ii) SSH Tools

There is a variety of different common SSH tools that can provide memory-related information. We will provide a few most common and useful tools, which would be present in pretty much any GNU/Linux system.

# free

This tool is one of the most basic, simple and fast ways to check overall memory usage via the command line. Its purpose is to show the amount of free memory available in the system: both physical and swap memory, and any buffers used by kernel. When you run this command, you will see something like this: 

Here are the columns displayed:

Total: specifies the actual amount of physical RAM and swap available in the system
Used: shows how much is currently used by the system and its processes
Free: shows the amount of memory that is not occupied at the moment
Sharedbuffers and cache: shows the amount of memory used by kernel for particular purposes, such as shared between different processes or allocated to cache.

When examining the results of the free command, there is one subtlety you should consider. The Mem line values in the free column occasionally have very small values. Does this imply that the system has no free RAM? The majority of the time, it doesn’t because Linux-based systems frequently utilise cache for numerous processes to speed up and enhance programme performance. The system may always delete and replace the content of the memory used for caching if such a requirement arises in response to requests from other ongoing processes, therefore it actually has no adverse effects on performance. The cache uses only free memory.

So, the memory currently occupied by cache is technically not free, but practically can be freed at any moment. If you would like to check how much memory is actually available for processes in your system, take a look at -/+ buffers/cache line, free column. This field displays the amount of technically free memory plus currently cached and buffered memory, therefore, it is a more accurate representation of memory currently available for new processes if such a need arises.

Free command has a few parameters that may be useful. By default, the command displays the output shown in the screenshot. If you add -m or -g after the command, you will get the stats displayed in MB or GB correspondingly. In the modern versions of the free tool you can also use -h, and the tool will automatically use the most convenient units, like this:

# vmstat

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.

The first two lines provide the information on the organization of the table.

Procs shows information about processes: r means the number of processes running or waiting for run time, b means processes sleeping.

Memory section: swpd shows virtual memory used, free shows idle memory, buff and cache display memory allocated to buffers and cache correspondingly.

Two values in the swap section display amounts of data swapped to (si) and from (so) disk per second. Two values in the IO section show Input/Output stats for the drive: received from (bi) and sent to (bo) it.

In the system section in stands for interrupts per second, and cs is the abbreviation for context switches.

CPU shows percentages of processor usage:

us: usage by user-launched code as opposed to system processes
sy: usage by the actual system kernel
id: idle CPU time
wa: time spent waiting for Input/Output
st: time stolen from a virtual machine

This tool also provides another way to structure this information. Feel free to use the -s parameter to display stats: 

# ps

By default, this tool shows the processes currently launched and additional information on them. Here is an example of the output:

Only the processes that were launched by the command’s initiating user are displayed in the output, which contains no memory-related data. The parameters of this instrument are where its true power rests. For example, you can use the options -e to show all users’ processes, -o to show data in a custom format and specify a value like vsz to show the amount of virtual memory allotted to the process (expressed in kilobytes), or pmem to show the percentage of memory used by a certain process. As a result, the output for ps -eo pid,pmem,comm= might look something like this:

Here are a few examples with combining ps tool and standard sort tool to display the output of the command in a more usable way:

ps -eo pid,pmem,comm= | sort -n -k 2

ps -eo pid,vsz,comm= | sort -n -k 2

This will display the processes run by users (which the current shell is allowed to check) in a user-defined format (process ID, memory usage, command name), and also sorted by the amount of memory used.

# top, htop

When you need to monitor resource usage of your system in real time, it is better to use tools that natively support constantly refreshing output of data, or even an interactive interface to modify the current workflow of the system. The output of the commands also includes information about memory usage and allows to sort through processes in different ways.

The output of memory-related sections of the tools is similar to the output of the free tool.

top

You can use h or ? to bring up the help menu and the q key to quit the program. PageUp and PageDownscroll through the output. The m key shows or hides memory-related information. Shift + M sorts the processes by memory usage.

htop

Once again, feel free to use h or ? to see the list of keys used by the tool, and Shift + M sorts the processes by memory usage, but you can also use F1-F10 menus you can see at the bottom to access different more visual ways of controlling processes in your system.

Was this article helpful?
Dislike 0
Views: 61