8 Useful Commands to Monitor Swap Space Usage in Linux

Linux memory management is an essential aspect of every System Administrator to improve the performance of a Linux system. It is always a good practice to monitor swap space usage in Linux to ensure that your system operates relative to its memory demands.

Check Linux Swap Space Usage
8 Commands to Check Linux Swap Space Usage

Therefore in this article, we are going to look at ways to monitor swap space usage in a Linux system.

What is Swap space?

Swap space is a restricted amount of physical memory that is allocated for use by the operating system when available memory has been fully utilized. It is memory management that involves swapping sections of memory to and from physical storage.

On most distributions of Linux, it is recommended that you set swap space when installing the operating system. The amount of swap space you can set for your Linux system may depend on the architecture and kernel version.

How Do I Check Swap Space Usage in Linux?

We shall look at different commands and tools that can help you to monitor your swap space usage in your Linux systems as follows:

1. Using swapon Command – Check Swap Usage

The swapon command helps you to specify the devices on which paging and swapping will be done and we shall look at a few important options.

To view all devices marked as a swap in the /etc/fstab file you can use the --all option. Though devices that are already working as swap space are skipped.

# swapon --all

If you want to view a summary of swap space usage by device, use the --summary option as follows.

# swapon --summary

Filename				Type		Size	Used	Priority
/dev/sda10                              partition	8282108	0	-1

Use --help option to view help information or open the manpage for more usage options.

Check Swap Usage in Linux
Check Swap Usage in Linux

2. Using /proc/swaps – Measures Swap Space

The /proc filesystem is a very special virtual filesystem in Linux, which is also referred to as a process information pseudo-file system.

It actually does not contain ‘real’ files but runtime system information, for example, system memory, devices mounted, hardware configuration, and many more. Therefore you can also refer to it as a control and information base for the kernel.

To understand more about this filesystem read our article: Understanding /proc File System in Linux.

To check swap usage information, you can view the /proc/swaps file using the cat utility.

# cat /proc/swaps

Filename				Type		Size	Used	Priority
/dev/sda10                              partition	8282108	0	-1

3. Using ‘free’ Command – Show Swap Usage

The free command is used to display the amount of free and used system memory. Using the free command with -h option, which displays output in a human-readable format.

# free -h

             total       used       free     shared    buffers     cached
Mem:          7.7G       4.7G       3.0G       408M       182M       1.8G
-/+ buffers/cache:       2.7G       5.0G
Swap:         7.9G         0B       7.9G

From the output above, you can see that the last line provides information about the system swap space. More usage and examples of free commands can be found at: 10 free Commands to Check Memory Usage in Linux.

4. Using top Command

The top command displays the processor activity of your Linux system, and tasks managed by the kernel in real-time. To understand how the top command works, read this article: 12 top Commands to Check Linux Process Activity

To check swap space usage with the help of the ‘top’ command run the following command.

# top
Check Swap Space Using Top Command
Check Swap Space Using Top Command

5. Using atop Command

The atop command is a system monitor that reports about activities of various processes. But importantly it also shows information about free and used memory space.

# atop
Atop Check Swap Usage
Atop Check Swap Usage

To know more about how to install and use atop command in Linux, read this article: Monitor Logging Activity of Linux System Processes

6. Using htop Command

The htop command is used to view processes in an interactive mode and also displays information about memory usage.

# htop
Htop Check Swap Usage
Htop Check Swap Usage

For more information regarding the installation and usage of the htop command, read this article: Htop – Interactive Linux Process Monitoring

7. Using the Glances Command

This is a cross-platform system monitoring tool that displays information about running processes, cpu load, storage space usage, memory usage, swap space usage, and many more.

# glances
Glances Check Swap Usage
Glances Check Swap Usage

For more information regarding the installation and usage of the glances command, read this article: Glances – An Advanced Real-Time Linux System Monitoring Tool

8. Using the vmstat Command

The vmstat command is used to display information about virtual memory statistics, information about running processes, memory usage, CPU activity, paging, etc.

To install vmstat on your Linux system, run:

$ sudo apt install vmstat          [On Debian, Ubuntu and Mint]
$ sudo yum install vmstat          [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
$ sudo emerge -a sys-apps/vmstat   [On Gentoo Linux]
$ sudo apk add vmstat              [On Alpine Linux]
$ sudo pacman -S vmstat            [On Arch Linux]
$ sudo zypper install vmstat       [On OpenSUSE]    

After vmstat installation, run:

# vmstat
VmStat Check Swap Usage
VmStat Check Swap Usage

You need to take note of the following in the swap field from the output of this command.

  • si: Amount of memory swapped in from disk (s).
  • so: Amount of memory swapped to disk (s).
Summary

These are easy methods one can use and follow to monitor swap space usage in Linux and hope this article was helpful. In case you need help or want to add any information relating to memory management in Linux systems, please post a comment. Stay connected to Tecmint.

If you read this far, tweet to the author to show them you care. Tweet a thanks
Aaron Kili
Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

16 thoughts on “8 Useful Commands to Monitor Swap Space Usage in Linux”

  1. I prefer to create a simple bash script with the content below:

    ps ax -o pid,args | grep -v '^  PID'|sed -e 's,^ *,,' > /tmp/ps_ax.output
    echo -n >/tmp/results
    
    for swappid in $(grep -l Swap /proc/[1-9]*/smaps ); do
            swapusage=0
            for x in $( grep Swap $swappid 2>/dev/null |grep -v '\W0 kB'|awk '{print $2}' ); do
                    let swapusage+=$x
            done
            pid=$(echo $swappid| cut -d' ' -f3|cut -d'/' -f3)
            if ( [ $swapusage -ne 0 ] ); then
                    echo -ne "$swapusage kb\t\t" >>/tmp/results
                    egrep "^$pid " /tmp/ps_ax.output |sed -e 's,^[0-9]* ,,' >>/tmp/results
            fi
    done
    
    echo "top swap using processes which are still running:"
    sort -nr /tmp/results | head -n 10
    

    Result will be the top 10 processes using swap.

    Reply
    • @Stanislav,

      I tried running the script on my Linux Mint, but getting the following error.

      ./swa.sh: 1: cannot create /tmp/ps_ax.output: Permission denied
      ./swa.sh: 2: cannot create /tmp/results: Permission denied
      top swap using processes that are still running:
      
      Reply
      • Hi Ravi, seems you have no rights in /tmp, check the permissions:

        Here is the output from RedHat 8.7

        root@vxltsap001:~# ./swap.sh
        top swap using processes which are still running:
        251000 kb               /usr/libexec/packagekitd
        126384 kb               /opt/commvault/commvault/Base/cvd
        68564 kb                splunkd -p 8089 restart
        48632 kb                /usr/sbin/rsyslogd -n
        43776 kb                /app/code-server/lib/node /app/code-server --bind-addr 0.0.0.0:8443 --user-data-dir /config/data --extensions-dir 
                                /config/extensions --disable-telemetry --auth none  /config/workspace
        30584 kb                /opt/commvault/commvault/Base/ClMgrS
        24860 kb                [splunkd pid=1278354] splunkd -p 8089 restart [process-runner]
        17424 kb                /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8443 -container-ip 172.18.0.2 -container-port 8443
        17376 kb                /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.3 -container-port 80
        17352 kb                /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.3 -container-port 80
        
        Reply
        • @Stanislav,

          Thanks, yes it seems permission issue, as I am running the script as a sudo user. Could you make the script workable with sudo privileges?

          Reply
          • I have no experience with Mint but in Redhat Linux with ordinary users is working as well.

            stani@server:~$ sudo ./swap.sh
            top swap using processes that are still running:
            15816 kb                /usr/bin/perl -w /opt/lpar2rrd/lpar2rrd/bin/lpar2rrd-daemon.pl
            10248 kb                [splunkd pid=3066545] splunkd -p 8089 restart [process-runner]
            5864 kb         splunkd -p 8089 restart
            5424 kb         /usr/lib/polkit-1/polkitd --no-debug
            4912 kb         /usr/sbin/rngd -f --fill-watermark=0 -x pkcs11 -x nist -D daemon:daemon
            4152 kb         /usr/libexec/platform-python -Es /usr/sbin/tuned -l -P
            3064 kb         /usr/lib/systemd/systemd-journald
            2027 kb         (sd-pam)
            1464 kb         /usr/sbin/sshd -D
            920 kb          /usr/libexec/postfix/master -w
            
  2. If you want to top to monitor swap, you should add swap to the menu and sort by it. to do this:

    • type top to display
    • hit f bring up the fields menu
    • use the down arrow to go down to the word swap
    • use the right arrow to select swap so you can move it up
    • use the up arrow to place it where you want it to be viewed. I put it between %cpu and %mem.
    • use the left arrow to deselect swap
    • hit d to dot swap so it will be seen
    • hit s to sort by swap
    • hit ESC to see the top screen and you will see that top is now sorting by swap
    Reply
  3. Nice artical and nicely explained but i have one query that why to use swap space even if we have lot of free memory?

    Reply
    • @Balamukunda

      Swap space is used to temporarily hold data moved from the system RAM, which is not actively being used by the system or user especially when RAM is filling up. It is therefore a “backup RAM” of sorts. Even if you have enough RAM, it is still recommended to create a swap space for Linux.

      Another reason is that it helps during the hibernation of a computer, where the image of the RAM is captured and saved in the swap area. On restarting the computer, that image is reloaded into RAM, thereby enabling you to work from where you had stopped(point of hibernation).

      I hope you find this helpful.

      Reply

Got something to say? Join the discussion.

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.