The iostat
command generates two types of reports, the CPU
Utilization report and the Device Utilization report.
CPU Utilization Report
The first report generated by the iostat
command is the
CPU Utilization Report. For multiprocessor systems, the
CPU values are global averages among all processors. The
report has the following format:
%user Show the percentage of CPU utilization that
occurred while executing at the user level
(application).
%nice Show the percentage of CPU utilization that
occurred while executing at the user level with
nice priority.
%system
Show the percentage of CPU utilization that
occurred while executing at the system level
(kernel).
%iowait
Show the percentage of time that the CPU or CPUs
were idle during which the system had an
outstanding disk I/O request.
%steal Show the percentage of time spent in involuntary
wait by the virtual CPU or CPUs while the
hypervisor was servicing another virtual processor.
%idle Show the percentage of time that the CPU or CPUs
were idle and the system did not have an
outstanding disk I/O request.
Device Utilization Report
The second report generated by the iostat
command is the
Device Utilization Report. The device report provides
statistics on a per physical device or partition basis.
Block devices and partitions for which statistics are to
be displayed may be entered on the command line. If no
device nor partition is entered, then statistics are
displayed for every device used by the system, and
providing that the kernel maintains statistics for it. If
the ALL
keyword is given on the command line, then
statistics are displayed for every device defined by the
system, including those that have never been used.
Transfer rates are shown in 1K blocks by default, unless
the environment variable POSIXLY_CORRECT
is set, in which
case 512-byte blocks are used. The report may show the
following fields, depending on the flags used (e.g. -x
,
-s
and -k
or -m
):
Device:
This column gives the device (or partition) name as
listed in the /dev directory.
tps Indicate the number of transfers per second that
were issued to the device. A transfer is an I/O
request to the device. Multiple logical requests
can be combined into a single I/O request to the
device. A transfer is of indeterminate size.
Blk_read/s (kB_read/s, MB_read/s)
Indicate the amount of data read from the device
expressed in a number of blocks (kilobytes,
megabytes) per second. Blocks are equivalent to
sectors and therefore have a size of 512 bytes.
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s)
Indicate the amount of data written to the device
expressed in a number of blocks (kilobytes,
megabytes) per second.
Blk_dscd/s (kB_dscd/s, MB_dscd/s)
Indicate the amount of data discarded for the
device expressed in a number of blocks (kilobytes,
megabytes) per second.
Blk_w+d/s (kB_w+d/s, MB_w+d/s)
Indicate the amount of data written to or discarded
for the device expressed in a number of blocks
(kilobytes, megabytes) per second.
Blk_read (kB_read, MB_read)
The total number of blocks (kilobytes, megabytes)
read.
Blk_wrtn (kB_wrtn, MB_wrtn)
The total number of blocks (kilobytes, megabytes)
written.
Blk_dscd (kB_dscd, MB_dscd)
The total number of blocks (kilobytes, megabytes)
discarded.
Blk_w+d (kB_w+d, MB_w+d)
The total number of blocks (kilobytes, megabytes)
written or discarded.
r/s The number (after merges) of read requests
completed per second for the device.
w/s The number (after merges) of write requests
completed per second for the device.
d/s The number (after merges) of discard requests
completed per second for the device.
f/s The number (after merges) of flush requests
completed per second for the device. This counts
flush requests executed by disks. Flush requests
are not tracked for partitions. Before being
merged, flush operations are counted as writes.
sec/s (kB/s, MB/s)
The number of sectors (kilobytes, megabytes) read
from, written to or discarded for the device per
second.
rsec/s (rkB/s, rMB/s)
The number of sectors (kilobytes, megabytes) read
from the device per second.
wsec/s (wkB/s, wMB/s)
The number of sectors (kilobytes, megabytes)
written to the device per second.
dsec/s (dkB/s, dMB/s)
The number of sectors (kilobytes, megabytes)
discarded for the device per second.
rqm/s The number of I/O requests merged per second that
were queued to the device.
rrqm/s The number of read requests merged per second that
were queued to the device.
wrqm/s The number of write requests merged per second that
were queued to the device.
drqm/s The number of discard requests merged per second
that were queued to the device.
%rrqm The percentage of read requests merged together
before being sent to the device.
%wrqm The percentage of write requests merged together
before being sent to the device.
%drqm The percentage of discard requests merged together
before being sent to the device.
areq-sz
The average size (in kilobytes) of the I/O requests
that were issued to the device.
Note: In previous versions, this field was known as
avgrq-sz and was expressed in sectors.
rareq-sz
The average size (in kilobytes) of the read
requests that were issued to the device.
wareq-sz
The average size (in kilobytes) of the write
requests that were issued to the device.
dareq-sz
The average size (in kilobytes) of the discard
requests that were issued to the device.
await The average time (in milliseconds) for I/O requests
issued to the device to be served. This includes
the time spent by the requests in queue and the
time spent servicing them.
r_await
The average time (in milliseconds) for read
requests issued to the device to be served. This
includes the time spent by the requests in queue
and the time spent servicing them.
w_await
The average time (in milliseconds) for write
requests issued to the device to be served. This
includes the time spent by the requests in queue
and the time spent servicing them.
d_await
The average time (in milliseconds) for discard
requests issued to the device to be served. This
includes the time spent by the requests in queue
and the time spent servicing them.
f_await
The average time (in milliseconds) for flush
requests issued to the device to be served. The
block layer combines flush requests and executes at
most one at a time. Thus flush operations could be
twice as long: Wait for current flush request, then
execute it, then wait for the next one.
aqu-sz The average queue length of the requests that were
issued to the device.
Note: In previous versions, this field was known as
avgqu-sz.
%util Percentage of elapsed time during which I/O
requests were issued to the device (bandwidth
utilization for the device). Device saturation
occurs when this value is close to 100% for devices
serving requests serially. But for devices serving
requests in parallel, such as RAID arrays and
modern SSDs, this number does not reflect their
performance limits.