Scroll to navigation

IOTOP(8) System Manager's Manual IOTOP(8)

NAME

iotop - simple top-like I/O monitor

SYNOPSIS

iotop [OPTIONS]

DESCRIPTION

iotop watches I/O usage information available in the Linux kernel (requires 2.6.20 or later) and displays a table of current I/O usage by processes or threads on the system. At least the CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING, CONFIG_TASKSTATS and CONFIG_VM_EVENT_COUNTERS options need to be enabled in your Linux kernel build configuration.

Running iotop as non-root user is possible by adding the NET_ADMIN capability. This can be done by e.g.:

$ sudo setcap 'cap_net_admin+eip' <path-to>/iotop

Be warned that this will also allow other users to run it and get access to information that normally should not be available to them.

iotop displays columns for the I/O bandwidth read and written by each process/thread during the sampling period. It also displays the percentage of time the thread/process spent while swapping in and while waiting on I/O. For each process, its I/O priority (class/level) is shown.

In addition, the total I/O bandwidth read and written during the sampling period are displayed at the top of the interface. Total DISK READ and Total DISK WRITE values represent total read and write bandwidth between processes and kernel threads on one side and kernel block device subsystem on the other. While Current DISK READ and Current DISK WRITE values represent corresponding bandwidths for current disk I/O between the kernel block device subsystem and the underlying hardware (HDD, SSD, etc.). Thus Total and Current values may not be equal at any given moment of time due to data caching and I/O operations reordering that take place inside the Linux kernel.

Use the left and right arrows to select the sort column, r or space to reverse the sorting order, o to toggle the --only option (this uses the visible values from the GRAPH column or the IO column in case the GRAPH column is hidden), p to toggle the --processes option, a to toggle the --accumulated option, i to change the priority of a thread or a process's thread, f to change filtering by UID/PID (--user and --pid options), 1-9 to toggle the visibility of the respective column, 0 to show all columns, up/down arrows, page-up/page-down/home/end keys to scroll and q to quit. Any unrecognized key will be ignored.

All processes or threads that have exited are displayed grayed for the same time as is visible in the GRAPH column or 3 seconds when it is hidden. The invalid data points in the GRAPHS column are displayed inverse or with letter x (see option --dead-x and x shortcut). When using unicode characters each position contains two datapoints and only the positions with two invalid data points are reversed.

It is possible for threads of a process to have different priority from their main process. This is shown with ! in the PRIO column of the main process as e.g. !be/4.

Threads activity is always aggregated with and shown inside the main process.

When showing threads, they always appear below their main process and are sorted in the same way as the processes.

There are two ways to change the IO priority of a process or thread - press i and use arrows to select the process or thread from the visible ones on screen or press i and type its TID (PID and TID have the same value for the main process). Then use tab and arrows to change the priority value and confirm with enter. Shortcuts esc or q will cancel this mode.

To change the UID and PID filters, press f and use tab to select the UID or PID field, then type the numerical id or n to remove the filter and confirm with enter. Filtering is always done by TID because it is unique. Note that for the main process PID is the same as TID. Shortcuts esc or q will cancel this mode.

Starting with Linux kernel 5.14.x task_delayacct is configurable at runtime and set to off by default. This setting can be changed in interactive mode by the Ctrl-T shortcut. In batch mode a warning is printed when the setting is OFF. From the command line this can be enabled by:

$ sudo sysctl kernel.task_delayacct=1

and disabled again by:

$ sudo sysctl kernel.task_delayacct=0

It is advisable to keep this option off when not using this or another monitoring program because when enabled it has some effect on system performance.

OPTIONS

Show the version number and exit
Show usage information and exit
Set the type of interactive help shown. Accepted values for TYPE are none, win and inline.
Only show processes or threads actually doing I/O, instead of showing all processes or threads. This can be dynamically toggled by pressing o
Turn on non-interactive mode. Useful for logging I/O usage over time
Set the number of iterations before quitting (never quit by default). This is most useful in non-interactive mode
Set the delay between iterations in seconds (1 second by default). Accepts non-integer values such as 1.1 seconds
A process/thread id to monitor (all by default)
A user id to monitor (all by default). The value will always be resolved first unless it is prefixed by + in which case it is treated as numeric only. Values that do not resolve but appear to be numeric are used as numeric
Only show processes. Normally iotop shows processes and all threads
Show accumulated I/O instead of bandwidth. In this mode, iotop shows the amount of I/O processes have done since iotop started
Use kilobytes instead of a human friendly unit. This mode is useful when scripting the batch mode of iotop. Instead of choosing the most appropriate unit iotop will display all sizes in kilobytes
Add a timestamp on each line (implies --batch). Each line will be prefixed by the current time
Show processes' full file path and parameters
-1, --hide-pid
Hide PID/TID column
-2, --hide-prio
Hide PRIO column
-3, --hide-user
Hide USER column
-4, --hide-read
Hide DISK READ column
-5, --hide-write
Hide DISK WRITE column
-6, --hide-swapin
Hide SWAPIN column
-7, --hide-io
Hide IO column
-8, --hide-graph
Hide GRAPH column
-9, --hide-command
Hide COMMAND column
Set GRAPH column data source. Accepted values for TYPE are io, r, w, rw and sw.
-q, --quiet
Suppress some lines of header (implies --batch). This option can be specified up to three times to remove header lines
column names are only printed on the first iteration,
column names are never printed,
the I/O summary is never printed
Show exited processes/threads with letter x instead of inverse background
Hide exited processes
Do not colorize values

KEYBOARD SHORTCUTS

q, Q
Exit
<space>, r, R
Toggle sort order
<home>
Scroll to the top of the list
<end>
Scroll to the bottom of the list
<page-up>
Scroll one screen up
<page-down>
Scroll one screen down
<up>
Scroll one line up
<down>
Scroll one line down
<right>
Sort by next column
<left>
Sort by previous column
<esc>
Cancel ionice or filter selection. In case only the help window is open then close it
Toggle showing only processes with IO activity
Toggle showing processes/threads
Toggle showing accumulated/current values
?
Toggle showing inline help
Toggle showing window help
Toggle showing full command line
1, 2, 3, 4, 5, 6, 7, 8, 9
Toggle showing the column (column number corresponds to the shortcut)
0
Show all columns
Cycle GRAPH source (IO=IO, R=DISK READ , W=DISK WRITE, R+W=DISK READ+DISK WRITE, SW=SWAPIN). Using g will cycle forward and G will cycle backward.
IOnice a process/thread (depends on process/thread display mode)
Change UID and PID filters
Toggle using Unicode/ASCII characters for pseudo graph
Toggle colorizing values
Toggle the display mode of exited processes/threads between letter x and inverse background
Toggle the display of exited processes
Toggle freeze of data collection
Toggle task_delayacct kernel sysctl
/
Change search regular expression. While the search regular expression is being edited, there is an indicator next to it that shows if the expression is valid. The search is confirmed by <enter> or cancelled by <esc>.

List of shortcuts in the editor:

<esc>
Cancel editing and remove the regular expression filter
<enter>
Confirm the current regular expression and exit edit mode. In case the regular expression is empty or invalid it will match everything.
Delete one word from cursor to the left
Delete one word from cursor to the right
Move the cursor to the beginning of the word on the left
Move the cursor after the end of the word on the right
Move the cursor to the leftmost position
Move the cursor after the last character
Move the cursor to the left
Move the cursor to the right
Delete the character left of cursor
Delete the character under the cursor
Delete from the character under the cursor to the end of the line
Delete everything
[anything-else]
Non-printable characters are ignored. Normal characters are inserted before the character under the cursor. UTF-8 sequences are parsed and treated as a single character. Unicode combining characters will be appended to the character under the cursor.

ENVIRONMENT

As per the recommendation of https://www.no-color.org/ iotop honors the contents of the environment variable NO_COLOR and when it is set to a non empty string, all color output is suppressed.

SEE ALSO

ionice(1), top(1), vmstat(1), atop(1), htop(1)

AUTHOR

The original Python iotop implementation was written by Guillaume Chazarain. This rewrite in C was started in 2014 by Vyacheslav Trushkin and reworked to include all missing features from the original Python code and several new ones from 2020 to 2022 by Boian Bonev.

This manual page was started by Paul Wise for the Debian project and is placed in the public domain.

July 8, 2022