Cyberithub

26 iostat, vmstat and mpstat command examples to monitor Linux Performance

Table of Contents

In this article, we will look into 26 iostat, vmstat and mpstat command examples to monitor Linux Server Performance. In a Production Environment, Server performance monitoring is done to keep an eye on the optimal resource utilization. Any under performance of resources due to hardware degradation over a period of time or due to some other factor can cause production loss and any over utilization of resources like CPU and memory may cause the Server to crash, so to avoid these use cases it is very important to keep an eye on all the critical resources. Tools like iostat, vmstat and mpstat collectively can perform such tasks with ease.

iostat and mpstat tools are available from sysstat package whereas vmstat utility is available from procps-ng package. Using these tools you can monitor the Linux CPU utilization, Disk utilization, Memory utilization and other devices utilization. You can even generate reports and stats and transfer it to some file. We will look into the usage of all these tools in great detail as we go through.

25 iostat, vmstat and mpstat command examples to monitor Linux Performance

iostat, vmstat and mpstat command examples to monitor Linux Performance

Also Read: Practical Steps to Install iostat and mpstat command on Linux(RHEL/CentOS 7/8)

iostat examples

Example 1: How to Check iostat version

If you want to check the version of iostat then you need to use iostat -Version command as shown below. As you can see from below output, current iostat version is 10.1.5.

[root@localhost ~]# iostat -Version
sysstat version 10.1.5
(C) Sebastien Godard (sysstat <at> orange.fr)

-Version : Print version number then exit.

Example 2: How to Check I/O Performance using iostat 

If you want to check the I/O Performance of your Linux Server devices then you need to use iostat command as shown below.

[root@localhost ~]# iostat
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
         0.14  0.00  0.14     0.01    0.00  99.71

Device: tps  kB_read/s kB_wrtn/s kB_read kB_wrtn
sda     0.76 24.01     1.17      140590   6833
sdb     0.02 0.46      0.00      2688      0
sdc     0.03 0.90      0.00      5284      0
dm-0    0.67 18.39     0.82      107707   4785
dm-1    0.02 0.38      0.00      2204      0

%user:  This shows the percentage of CPU utilization that occurred while executing at the user level (application).

%nice: This shows the percentage of CPU utilization that occurred while executing at the user level with nice priority.

%system: This shows the percentage of CPU utilization that occurred while executing at the system level (kernel).

%iowait: This shows the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.

%steal: This shows the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor.

%idle: This shows the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request.

Example 3: How to Show only CPU stats using iostat

If you only want to check the CPU stats then you can use -c option with iostat command as shown below. It will only show the CPU Utilization report.

[root@localhost ~]# iostat -c
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
         0.04   0.00   0.09    0.00   0.00  99.87

-c : Display the CPU utilization report. More on iostat Man Page.

Example 4: How to Show only Device Stats Using iostat

If you want to show only the device stats then you need to use -d option with iostat command as shown below.

[root@localhost ~]# iostat -d
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.28 5.11 0.65 196942 25176
sdb 0.00 0.07 0.00 2688 0
sdc 0.00 0.14 0.00 5284 0
dm-0 0.26 4.26 0.60 163995 23128
dm-1 0.00 0.06 0.00 2204 0

-d : Display the device utilization report. More on iostat Man Page.

Example 5: How to show CPU and Device Stats in Detail

If you want to check extended stats about both CPU and Device stats then you need to use -x option with iostat command as shown below.

[root@localhost ~]# iostat -x
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
          0.04 0.00    0.09    0.00   0.00  99.87

Device: rrqm/s wrqm/s r/s   w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda     0.00   0.01   0.20 0.08 5.10  0.65   40.80    0.00    0.84   0.59    1.46   0.61   0.02
sdb     0.00   0.00   0.00 0.00 0.07  0.00   46.75    0.00    0.37   0.37    0.00   0.32   0.00
sdc     0.00   0.00   0.00 0.00 0.14  0.00   62.16    0.00    0.52   0.52    0.00   0.36   0.00
dm-0    0.00   0.00   0.19 0.07 4.25  0.60   37.38    0.00    0.93   0.58    1.88   0.64   0.02
dm-1    0.00   0.00   0.00 0.00 0.06  0.00   50.09    0.00    0.32   0.32    0.00   0.24   0.00

-x : Display extended statistics. More on iostat Man Page.

Example 6: How to Show Block Device Stats 

If you want to check only Block device stats then you need to use -p option with iostat command as shown below.

[root@localhost ~]# iostat -p
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
          0.04 0.00    0.09    0.00   0.00  99.87

Device: tps  kB_read/s kB_wrtn/s kB_read kB_wrtn
sda     0.28  5.09      0.65      196942  25208
sda1    0.01  0.70      0.05      27071   2048
sda2    0.26  4.35      0.60      168327  23160
sdb     0.00  0.07      0.00       2688    0
sdc     0.00  0.14      0.00       5284    0
sdc1    0.00  0.10      0.00       3728    0
dm-0    0.26  4.24      0.60      163995  23160
dm-1    0.00  0.06      0.00       2204    0

-p : this option displays statistics for block devices and all their partitions that are used by the system.

Example 7: How to Display iostat output in Megabytes per second

If you want to show iostat output in megabytes per second then you need to use -m option with iostat command as shown below.

[root@localhost ~]# iostat -m
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
          0.04 0.00   0.09     0.00   0.00  99.87

Device: tps  MB_read/s MB_wrtn/s MB_read MB_wrtn
sda     0.28  0.00      0.00       192     24
sdb     0.00  0.00      0.00        2      0
sdc     0.00  0.00      0.00        5      0
dm-0    0.26  0.00      0.00       160     22
dm-1    0.00  0.00      0.00        2      0

-m : Display statistics in megabytes per second. More on iostat Man Page.

Example 8: How to Display iostat output in Kilobytes per second

If you want to show iostat output in Kilobytes per second then you need to use -k option with iostat command as shown below.

[root@localhost ~]# iostat -k
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
         0.04  0.00   0.08    0.00    0.00  99.87

Device: tps  kB_read/s kB_wrtn/s kB_read kB_wrtn
sda     0.25  4.41       0.59     196946 26527
sdb     0.00  0.06       0.00      2688    0
sdc     0.00  0.12       0.00      5284    0
dm-0    0.23  3.68       0.55     163999 24479
dm-1    0.00  0.05       0.00      2204

-k : Display statistics in kilobytes per second. More on iostat Man Page.

Example 9: How to Print Time for each of the iostat report displayed

If you want to show time for each of the iostat report generated you need to use -t option with iostat command as shown below.

[root@localhost ~]# iostat -t
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

12/07/2020 11:17:59 AM
avg-cpu: %user %nice %system %iowait %steal %idle
         0.04  0.00    0.08    0.00   0.00  99.87

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda     0.25 4.41      0.59     196946   26527
sdb     0.00 0.06      0.00      2688      0
sdc     0.00 0.12      0.00      5284      0
dm-0    0.23 3.67      0.55     163999   24479
dm-1    0.00 0.05      0.00      2204      0

-t : Print the time for each report displayed.

vmstat examples

Example 10: How to Check vmstat version

If you want to check vmstat command version then you need to use vmstat -Version command as shown below.

[root@localhost ~]# vmstat -Version
vmstat from procps-ng 3.3.10

-Version : Print version number then exit.

Example 11: How to Check Virtual Memory Performance using vmstat

To check virtual memory stats of your Server you can simply run vmstat command as shown below.

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free    buff cache  si so bi bo in cs us sy id  wa st
0 0 0    2418596 2116 135896 0  0  23 1  30 71 0  0  100 0  0

Example 12: How to Display number of Forks since Reboot

If you want to check total number of forks since last reboot then you need to use -f option with vmstat command as shown below.

[root@localhost ~]# vmstat -f
9593 forks

-f : this option displays the number of forks since boot. More on vmstat Man Page.

Example 13: How to Display Slabinfo Using vmstat

If you want to display slabinfo then you need to use -m option with vmstat command as shown below.

[root@localhost ~]# vmstat -m
Cache Num Total Size Pages
nf_conntrack_1 36 36 320 12
rpc_inode_cache 24 24 640 12
xfs_dqtrx 0 0 528 15
xfs_dquot 0 0 496 8
xfs_icr 0 0 168 24
xfs_ili 690 690 176 23
xfs_inode 24904 24904 960 8
xfs_efd_item 19 19 424 19
xfs_da_state 8 8 480 8
xfs_btree_cur 18 18 216 18
xfs_log_ticket 22 22 184 22

-m : Displays slabinfo. More on vmstat Man Page.

Example 14: How to Report Only Disk Statistics Using vmstat

If you want to generated report for only Disk statistics then you need to use -d option with vmstat command as shown below.

[root@localhost ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors   ms   total merged sectors  ms    cur sec
sda    7758    31    393901 4551   3570    288   53453 5063 0 7
sdb 115 0 5376 43 0 0 0 0 0 0
sdc 170 0 10568 88 0 0 0 0 0 0
sr0 0 0 0 0 0 0 0 0 0 0
dm-0 7329 0 328006 4230 3052 0 49357 5560 0 6
dm-1 88 0 4408 28 0 0 0 0 0 0

-d : Report disk statistics. More on vmstat Man Page.

Example 15: How to Display Stats about various Event Counters

To check stats about various event counters and memory in tabular form you need to use vmstat -s command as shown below.

[root@localhost ~]# vmstat -s
2865124 K total memory
361332 K used memory
199544 K active memory
96312 K inactive memory
2328824 K free memory
2116 K buffer memory
172852 K swap cache
2097148 K total swap
0 K used swap
2097148 K free swap
2000 non-nice user cpu ticks
14 nice user cpu ticks
3813 system cpu ticks
4605642 idle cpu ticks
180 IO-wait cpu ticks
0 IRQ cpu ticks

-s : Displays a table of various event counters and memory statistics. More on vmstat Man Page.

Example 16: How to Display Summary of Disk Statistics

If you want to display summary of disk statistics you need to use -D option with vmstat command as shown below.

[root@localhost ~]# vmstat -D
6 disks
3 partitions
15460 total reads
31 merged reads
742259 read sectors
8940 milli reading
6731 writes
296 merged writes
103804 written sectors
10771 milli writing
0 inprogress IO
13 milli spent IO

-D : Report some summary statistics about disk activity. More on vmstat Man Page.

Example 17: How to Append timestamp after each Line of vmstat output

To append timestamp after each line of vmstat output you need to use -t option with vmstat command as shown below.

[root@localhost ~]# vmstat -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st EST
0 0 0 2328896 2116 172852 0 0 4 1 16 49 0 0 100 0 0 2020-12-07 11:45:06

-t : Append timestamp to each line. More on vmstat Man Page.

Example 18: How to Show Detailed Statistics about a Partition

If you are looking to show the detailed statistics about a device partition then you need to use -p option with vmstat command as shown below. In this example we are checking stats about /dev/sda1 partition using vmstat -p /dev/sda1 command.

[root@localhost ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
258 54143 4 4096

-p : Detailed statistics about partition. More on vmstat Man Page.

Example 19: How to Show Detailed vmstat output

To check detailed virtual memory stats you need to use -w option with vmstat command as shown below.

[root@localhost ~]# vmstat -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free    buff cache  si so bi bo in cs us sy id  wa st
0 0  0   2328896 2116 172912 0  0  4  1  16 49  0  0 100 0  0

-w : Wide output mode. More on vmstat Man Page.

mpstat examples

Example 20: How to Check mpstat version

To check current version of mpstat command you need to use mpstat -Version as shown below.

[root@localhost ~]# mpstat -Version
sysstat version 10.1.5
(C) Sebastien Godard (sysstat <at> orange.fr)

-Version : Print version number then exit. More on mpstat Man Page.

Example 21: How to Check CPU Stats Using mpstat command

If you want to check all the processor stats then you need to simply run mpstat command as shown below.

[root@localhost ~]# mpstat
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

12:39:34 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
12:39:34 AM all 0.13 0.00  0.13 0.01    0.00 0.00  0.00   0.00    0.00  99.73

Example 22: How to Display total sum of CPU Stats using mpstat command

If you want to show the sum of interrupt stats then you need to use -I SUM with mpstat command as shown below. Output will show the sum of total number of interrupts received per second by the CPUs.

[root@localhost ~]# mpstat -I SUM
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/07/2020 _x86_64_ (1 CPU)

09:29:53 AM CPU intr/s
09:29:53 AM all 16.72

-I : Report interrupts statistics. More on mpstat Man Page.

Example 23: How to Display Processor Stats of All the CPUs Using mpstat command

If you want to show the processor stats for all the CPUs then you need to use -P ALL option with mpstat command as shown below.

[root@localhost ~]# mpstat -P ALL
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/08/2020 _x86_64_ (1 CPU)

08:23:41 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:23:41 AM all 0.57 0.00  0.44  0.02   0.00 0.01   0.00   0.00   0.00  98.95
08:23:41 AM 0   0.57 0.00  0.44  0.02   0.00 0.01   0.00   0.00   0.00  98.95

-P : Indicate the processor number for which statistics are to be reported. More on mpstat Man Page.

Example 24: How to Check Detailed Information Using mpstat command

If you want to show detailed CPU stats then you need to use -A option with mpstat command as shown below.

[root@localhost ~]# mpstat -A
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/08/2020 _x86_64_ (1 CPU)

08:25:03 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:25:03 AM all 0.55 0.00  0.43  0.02   0.00 0.01  0.00    0.00   0.00  98.99
08:25:03 AM 0   0.55 0.00  0.43  0.02   0.00 0.01  0.00    0.00   0.00  98.99

08:25:03 AM CPU intr/s
08:25:03 AM all 71.11
08:25:03 AM 0 65.90

08:25:03 AM CPU 0/s 1/s 8/s 9/s 12/s 14/s 15/s 18/s 19/s 21/s 22/s NMI/s LOC/s SPU/s PMI/s IWI/s RTR/s RES/s CAL/s TLB/s TRM/s THR/s DFR/s MCE/s MCP/s ERR/s MIS/s PIN/s NPI/s PIW/s
08:25:03 AM 0 0.10 0.05 0.00 0.00 0.10 0.00 1.03 4.09 0.92 2.30 0.00 0.00 57.32 0.00 0.00 5.21 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

08:25:03 AM CPU HI/s TIMER/s NET_TX/s NET_RX/s BLOCK/s BLOCK_IOPOLL/s TASKLET/s SCHED/s HRTIMER/s RCU/s
08:25:03 AM 0 0.00 37.60 0.19 0.92 2.78 0.00 0.06 0.00 0.00 24.35

Example 25: How to Display mpstat output after every n secs

If you want to display certain number of mpstat output after every n secs then you need to use below mpstat command. In this example we are displaying a total of 5 mpstat output refreshed after every 1 sec.

[root@localhost ~]# mpstat 1 5
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/08/2020 _x86_64_ (1 CPU)

08:26:36 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:26:37 AM all 0.00 0.00  0.00  0.00   0.00  0.00 0.00   0.00    0.00  100.00
08:26:38 AM all 0.00 0.00  0.00  0.00   0.00  0.00 0.00   0.00    0.00  100.00
08:26:39 AM all 0.00 0.00  0.00  0.00   0.00  0.00 0.00   0.00    0.00  100.00
08:26:40 AM all 0.00 0.00  0.00  0.00   0.00  0.00 0.00   0.00    0.00  100.00
08:26:41 AM all 0.00 0.00  1.00  0.00   0.00  0.00 0.00   0.00    0.00   99.00
Average: all 0.00 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.80

Example 26: How to Display Stats of a Specific Processor

If you want to display stats of a specific processor instead of showing for all the processor then you need to provide processor number with -P option as shown in below mpstat command output. In this example we are checking the CPU 0 stats by using mpstat -P 0 command.

[root@localhost ~]# mpstat -P 0
Linux 3.10.0-1160.2.2.el7.x86_64 (localhost.localdomain) 12/08/2020 _x86_64_ (1 CPU)

08:31:05 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08:31:05 AM 0   0.47 0.00  0.37  0.02   0.00  0.01  0.00   0.00   0.00  99.13

 

 

 

Popular Recommendations:-

16 Fdisk command examples to Manage Disk Partitions in Linux

How to Convert/Change time to epoch time using date utility on Linux/Unix Server

How to Install jq(JSON Processor) on RHEL/CentOS 7/8 

7 Simple Steps to Install MTR(My Traceroute) on Linux(RHEL/CentOS 7/8)

How to Install Arpwatch tool on RHEL/CentOS 7/8(Simple and Effective Steps)

How to Install and Use i3 Window Manager on Ubuntu 20.04

How to Suppress all the output of a Linux Bash Shell Script

25 Practical and Useful rpm command examples in Linux{cheatsheet}

Leave a Comment