|
NAME | SYNOPSIS | DESCRIPTION | REPORTS | OPTIONS | ENVIRONMENT | EXAMPLES | BUGS | FILES | AUTHOR | SEE ALSO | COLOPHON |
|
IOSTAT(1) Linux User's Manual IOSTAT(1)
iostat - Report Central Processing Unit (CPU) statistics and
input/output statistics for devices and partitions.
iostat [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [
-x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -o
JSON ] [ [ -H ] -g group_name ] [ --human ] [ -p [ device [,...] |
ALL ] ] [ device [...] | ALL ] [ interval [ count ] ]
The iostat command is used for monitoring system input/output device
loading by observing the time the devices are active in relation to
their average transfer rates. The iostat command generates reports
that can be used to change system configuration to better balance the
input/output load between physical disks.
The first report generated by the iostat command provides statistics
concerning the time since the system was booted, unless the -y option
is used (in this case, this first report is omitted). Each
subsequent report covers the time since the previous report. All
statistics are reported each time the iostat command is run. The
report consists of a CPU header row followed by a row of CPU
statistics. On multiprocessor systems, CPU statistics are calculated
system-wide as averages among all processors. A device header row is
displayed followed by a line of statistics for each device that is
configured.
The interval parameter specifies the amount of time in seconds
between each report. The count parameter can be specified in
conjunction with the interval parameter. If the count parameter is
specified, the value of count determines the number of reports
generated at interval seconds apart. If the interval parameter is
specified without the count parameter, the iostat command generates
reports continuously.
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:
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_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.
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.
sec/s (kB/s, MB/s)
The number of sectors (kilobytes, megabytes) read from
or written to 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.
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.
%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.
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.
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.
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.
svctm
The average service time (in milliseconds) for I/O
requests that were issued to the device. Warning! Do
not trust this field any more. This field will be
removed in a future sysstat version.
%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.
-c Display the CPU utilization report.
-d Display the device utilization report.
-g group_name { device [...] | ALL }
Display statistics for a group of devices. The iostat command
reports statistics for each individual device in the list then
a line of global statistics for the group displayed as
group_name and made up of all the devices in the list. The ALL
keyword means that all the block devices defined by the system
shall be included in the group.
-H This option must be used with option -g and indicates that
only global statistics for the group are to be displayed, and
not statistics for individual devices in the group.
-h Make the Device Utilization Report easier to read by a human.
--human is enabled implicitly with this option.
--human
Print sizes in human readable format (e.g. 1.0k, 1.2M, etc.)
The units displayed with this option supersede any other
default units (e.g. kilobytes, sectors...) associated with
the metrics.
-j { ID | LABEL | PATH | UUID | ... } [ device [...] | ALL ]
Display persistent device names. Options ID, LABEL, etc.
specify the type of the persistent name. These options are not
limited, only prerequisite is that directory with required
persistent names is present in /dev/disk. Optionally,
multiple devices can be specified in the chosen persistent
name type. Because persistent device names are usually long,
option
-k Display statistics in kilobytes per second.
-m Display statistics in megabytes per second.
-N Display the registered device mapper names for any device
mapper devices. Useful for viewing LVM2 statistics.
-o JSON
Display the statistics in JSON (Javascript Object Notation)
format. JSON output field order is undefined, and new fields
may be added in the future.
-p [ { device [,...] | ALL } ]
The -p option displays statistics for block devices and all
their partitions that are used by the system. If a device
name is entered on the command line, then statistics for it
and all its partitions are displayed. Last, the ALL keyword
indicates that statistics have to be displayed for all the
block devices and partitions defined by the system, including
those that have never been used. If option -j is defined
before this option, devices entered on the command line can be
specified with the chosen persistent name type.
-s Display a short (narrow) version of the report that should fit
in 80 characters wide screens.
-t Print the time for each report displayed. The timestamp format
may depend on the value of the S_TIME_FORMAT environment
variable (see below).
-V Print version number then exit.
-x Display extended statistics.
-y Omit first report with statistics since system boot, if
displaying multiple records at given interval.
-z Tell iostat to omit output for any devices for which there was
no activity during the sample period.
The iostat command takes into account the following environment
variables:
POSIXLY_CORRECT
When this variable is set, transfer rates are shown in
512-byte blocks instead of the default 1K blocks.
S_COLORS
When this variable is set, display statistics in color on the
terminal. Possible values for this variable are never, always
or auto (the latter is the default).
Please note that the color (being red, yellow, or some other
color) used to display a value is not indicative of any kind
of issue simply because of the color. It only indicates
different ranges of values.
S_COLORS_SGR
Specify the colors and other attributes used to display
statistics on the terminal. Its value is a colon-separated
list of capabilities that defaults to
H=31;1:I=32;22:M=35;1:N=34;1:Z=34;22. Supported capabilities
are:
H= SGR (Select Graphic Rendition) substring for percentage
values greater than or equal to 75%.
I= SGR substring for device names.
M= SGR substring for percentage values in the range from
50% to 75%.
N= SGR substring for non-zero statistics values.
Z= SGR substring for zero values.
S_TIME_FORMAT
If this variable exists and its value is ISO then the current
locale will be ignored when printing the date in the report
header. The iostat command will use the ISO 8601 format (YYYY-
MM-DD) instead. The timestamp displayed with option -t will
also be compliant with ISO 8601 format.
iostat
Display a single history since boot report for all CPU and
Devices.
iostat -d 2
Display a continuous device report at two second intervals.
iostat -d 2 6
Display six reports at two second intervals for all devices.
iostat -x sda sdb 2 6
Display six reports of extended statistics at two second
intervals for devices sda and sdb.
iostat -p sda 2 6
Display six reports at two second intervals for device sda and
all its partitions (sda1, etc.)
/proc filesystem must be mounted for iostat to work.
Kernels older than 2.6.x are no longer supported.
The average service time (svctm field) value is meaningless, as I/O
statistics are now calculated at block level, and we don't know when
the disk driver starts to process a request. For this reason, this
field will be removed in a future sysstat version.
/proc/stat contains system statistics.
/proc/uptime contains system uptime.
/proc/diskstats contains disks statistics.
/sys contains statistics for block devices.
/proc/self/mountstats contains statistics for network filesystems.
/dev/disk contains persistent device names.
Sebastien Godard (sysstat <at> orange.fr)
sar(1), pidstat(1), mpstat(1), vmstat(8), tapestat(1), nfsiostat(1),
cifsiostat(1)
http://pagesperso-orange.fr/sebastien.godard/
This page is part of the sysstat (sysstat performance monitoring
tools) project. Information about the project can be found at
⟨http://sebastien.godard.pagesperso-orange.fr/⟩. If you have a bug
report for this manual page, send it to systat-AT-orange.fr. This
page was obtained from the project's upstream Git repository
⟨https://github.com/sysstat/sysstat.git⟩ on 2018-02-02. (At that
time, the date of the most recent commit that was found in the repos‐
itory was 2018-01-29.) If you discover any rendering problems in
this HTML version of the page, or you believe there is a better or
more up-to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not part
of the original manual page), send a mail to man-pages@man7.org
Linux JANUARY 2018 IOSTAT(1)
Pages that refer to this page: cifsiostat(1), iostat2pcp(1), mpstat(1), nfsiostat-sysstat(1), pidstat(1), sar(1), tapestat(1), vmstat(8)