Linux vmstat Command - Tool to Report Virtual Memory Statistics

Vmstat is a tool that provides reporting virtual memory statistics. It covers the system’s memory, swap, and processor utilization in real-time.

Same with mpstat, vmstat is included in sysstat package. If you don’t have it, please install sysstat package.

To run vmstat, just type vmstat in your console. Running vmstat without parameter will show you a default result of vmstat.

vmstat result

Let’s see how to read the information provided by vmstat :


Procs have r column and b column. r columns means the total number of processes that waiting access fot the processor. While b column means the total no processes in a sleep state. Below those columns, there are values. From the above screenshot, we have 2 processes that waiting access to the processor and 0 for sleep processes.


Memory have swpd, free, buff and cache columns. This information is the same with free -m command. The swpd column show you about how much memory has been swapped to a swap file or disk. The free column show you the unallocated memory available. Buff column means how much in use memory. And cache column show you about how much memory that can be swapped into swap file or disk if there are some application is needed by them.


Swap show us how much memory is sent or retrieved from the swap system. The si column tell us how much memory is moved from swap to real memory per second. The so column tell us how much memory that is moved from real memory to swap.


The io show us the amount of input and output activity per second in terms of blocks read and blocks written. The bi column tell us about the number of blocks received and the bo tell us about the number of blocks sent.


System show us the number of system operations per second. The in column tell us about the number system interrupts per second. The cs column tell us the number of context switches that the system makes in order to process all tasks.


CPU show us the use of CPU’s resources. The us column tell us how much time that processor spends on non-kernel processes. The sy column tell us about how much time that processor spends on kernel related tasks. The id column tell us about how long the processor are idle. The wa column tell us how much time that the processor has been waiting for I/O operations to complete before being able to continue processing tasks.

1. Using vmstat with delay

As a tool for statistics, the best way of using vmstat is using a delay. So you can capture the activity periodically. Let say we want to run vmstat with 5 second delay. Just type vmstat 5 on your console to do it.

vmstat with 5 seconds delay

The command will run every 5 seconds until you press Ctrl-C to stop it.
You can use count to limit how many times vmstat will running.

vmstat with 7 times count

The above command will run vmstat with 5 seconds delay for 7 times.

2. Show active and inactive memory

To do it, you can add -a parameter to vmstat. Here’s a sample.

vmstat -a paramater

Note - When the run queue (r value) exceeds the number of CPUs on the server there is a good possibility for CPU bottleneck.

3. Show summarize disk statistics

vmstat can print your system disk statistics if you want. Use -D parameter to print it.

vmstat disk summarize

4. Show display unit

You can choose what unit character you want to print. Use -S followed by k (1000), K (1024), m (1000000), M (1048576) bytes. If you don’t choose the unit, vmstat will use K (1024).

vmstat define units

5. Print detail statistics for a specific partition

To do it, you can use -p parameter followed by device name. Here’s an example of it.

vmstat show partition detail

Files using

vmstat is using these files to works.



If you feel your system is running out memory, before you add some physical memory, this tool can help you to determine the root cause of the problem. As usual, you can explore more detail about vmstat command by typing 'man vmstat' on your console.

Leave a Comment