1IOTOP(8)                    System Manager's Manual                   IOTOP(8)
2
3
4

NAME

6       iotop - simple top-like I/O monitor
7

SYNOPSIS

9       iotop [OPTIONS]
10

DESCRIPTION

12       iotop  watches I/O usage information available in the Linux kernel (re‐
13       quires 2.6.20 or later) and displays a table of current  I/O  usage  by
14       processes  or  threads  on  the  system.  At  least the CONFIG_TASK_DE‐
15       LAY_ACCT,   CONFIG_TASK_IO_ACCOUNTING,   CONFIG_TASKSTATS   and    CON‐
16       FIG_VM_EVENT_COUNTERS  options  need to be enabled in your Linux kernel
17       build configuration.
18
19       Running iotop as non-root user is possible by adding the NET_ADMIN  ca‐
20       pability. This can be done by e.g.:
21
22              $ sudo setcap 'cap_net_admin+eip' <path-to>/iotop
23
24       Be  warned  that this will also allow other users to run it and get ac‐
25       cess to information that normally should not be available to them.
26
27       iotop displays columns for the I/O bandwidth read and written  by  each
28       process/thread  during  the  sampling period. It also displays the per‐
29       centage of time the thread/process spent while swapping  in  and  while
30       waiting  on  I/O.   For each process, its I/O priority (class/level) is
31       shown.
32
33       In addition, the total I/O bandwidth read and written during  the  sam‐
34       pling  period  are  displayed  at the top of the interface.  Total DISK
35       READ and Total DISK WRITE values represent total read and  write  band‐
36       width between processes and kernel threads on one side and kernel block
37       device subsystem on the other. While Current DISK READ and Current DISK
38       WRITE  values  represent  corresponding bandwidths for current disk I/O
39       between the kernel block device subsystem and the  underlying  hardware
40       (HDD, SSD, etc.). Thus Total and Current values may not be equal at any
41       given moment of time due to data caching and I/O operations  reordering
42       that take place inside the Linux kernel.
43
44       Use  the left and right arrows to select the sort column, r or space to
45       reverse the sorting order, o to toggle the --only option (this uses the
46       visible values from the GRAPH column or the IO column in case the GRAPH
47       column is hidden), p to toggle the --processes option, a to toggle  the
48       --accumulated  option,  i  to  change  the  priority  of  a thread or a
49       process's thread, f to change filtering by UID/PID  (--user  and  --pid
50       options),  1-9  to toggle the visibility of the respective column, 0 to
51       show all columns, up/down arrows,  page-up/page-down/home/end  keys  to
52       scroll and q to quit. Any unrecognized key will be ignored.
53
54       All  processes or threads that have exited are displayed grayed for the
55       same time as is visible in the GRAPH column or 3  seconds  when  it  is
56       hidden.  The invalid data points in the GRAPHS column are displayed in‐
57       verse or with letter x (see option --dead-x and x shortcut). When using
58       unicode  characters  each position contains two datapoints and only the
59       positions with two invalid data points are reversed.
60
61       It is possible for threads of a process to have different priority from
62       their main process. This is shown with ! in the PRIO column of the main
63       process as e.g. !be/4.
64
65       Threads activity is always aggregated with and shown  inside  the  main
66       process.
67
68       When  showing  threads, they always appear below their main process and
69       are sorted in the same way as the processes.
70
71       There are two ways to change the IO priority of a process or  thread  -
72       press i and use arrows to select the process or thread from the visible
73       ones on screen or press i and type its TID (PID and TID have  the  same
74       value for the main process). Then use tab and arrows to change the pri‐
75       ority value and confirm with enter. Shortcuts esc or q will cancel this
76       mode.
77
78       To  change  the  UID and PID filters, press f and use tab to select the
79       UID or PID field, then type the numerical id or n to remove the  filter
80       and  confirm  with enter. Filtering is always done by TID because it is
81       unique. Note that for the main process PID is the same as  TID.  Short‐
82       cuts esc or q will cancel this mode.
83
84       Starting  with  Linux  kernel  5.14.x task_delayacct is configurable at
85       runtime and set to off by default. This setting can be changed  in  in‐
86       teractive  mode  by  the  Ctrl-T  shortcut.  In batch mode a warning is
87       printed when the setting is OFF. From the command line this can be  en‐
88       abled by:
89
90              $ sudo sysctl kernel.task_delayacct=1
91
92       and disabled again by:
93
94              $ sudo sysctl kernel.task_delayacct=0
95
96       It  is advisable to keep this option off when not using this or another
97       monitoring program because when enabled it has some  effect  on  system
98       performance.
99

OPTIONS

101       -v, --version
102              Show the version number and exit
103
104       -h, --help
105              Show usage information and exit
106
107       -o, --only
108              Only  show  processes  or threads actually doing I/O, instead of
109              showing all processes or threads. This can be  dynamically  tog‐
110              gled by pressing o
111
112       -b, --batch
113              Turn on non-interactive mode.  Useful for logging I/O usage over
114              time
115
116       -n NUM, --iter=NUM
117              Set the number of iterations before quitting (never quit by  de‐
118              fault).  This is most useful in non-interactive mode
119
120       -d SEC, --delay=SEC
121              Set  the  delay  between  iterations in seconds (1 second by de‐
122              fault).  Accepts non-integer values such as 1.1 seconds
123
124       -p PID, --pid=PID
125              A process/thread id to monitor (all by default)
126
127       -u USER, --user=USER
128              A user id to monitor (all by default).  The value will always be
129              resolved  first  unless  it is prefixed by + in which case it is
130              threated as numeric only. Values that do not resolve but  appear
131              to be numeric are used as numeric
132
133       -P, --processes
134              Only  show  processes.  Normally  iotop  shows processes and all
135              threads
136
137       -a, --accumulated
138              Show accumulated I/O instead of bandwidth. In this  mode,  iotop
139              shows the amount of I/O processes have done since iotop started
140
141       -k, --kilobytes
142              Use  kilobytes  instead  of a human friendly unit.  This mode is
143              useful when scripting the batch mode of iotop. Instead of choos‐
144              ing  the  most  appropriate unit iotop will display all sizes in
145              kilobytes
146
147       -t, --time
148              Add a timestamp on each line (implies --batch). Each  line  will
149              be prefixed by the current time
150
151       -c, --fullcmdline
152              Show processes' full file path and parameters
153
154       -1, --hide-pid
155              Hide PID/TID column
156
157       -2, --hide-prio
158              Hide PRIO column
159
160       -3, --hide-user
161              Hide USER column
162
163       -4, --hide-read
164              Hide DISK READ column
165
166       -5, --hide-write
167              Hide DISK WRITE column
168
169       -6, --hide-swapin
170              Hide SWAPIN column
171
172       -7, --hide-io
173              Hide IO column
174
175       -8, --hide-graph
176              Hide GRAPH column
177
178       -9, --hide-command
179              Hide COMMAND column
180
181       -q, --quiet
182              Suppress some lines of header (implies --batch). This option can
183              be specified up to three times to remove header lines
184              -q     column names are only printed on the first iteration,
185              -qq    column names are never printed,
186              -qqq   the I/O summary is never printed
187
188       -x, --dead-x
189              Show dead processes/threads with letter  x  instead  of  inverse
190              background
191

KEYBOARD SHORTCUTS

193       q, Q   Exit
194
195       <space>, r, R
196              Toggle sort order
197
198       <home> Scroll to the top of the list
199
200       <end>  Scroll to the bottom of the list
201
202       <page-up>
203              Scroll one screen up
204
205       <page-down>
206              Scroll one screen down
207
208       <up>   Scroll one line up
209
210       <down> Scroll one line down
211
212       <right>
213              Sort by next column
214
215       <left> Sort by previous column
216
217       <esc>  Cancel  ionice or filter selection. In case only the help window
218              is open then close it
219
220       o, O   Toggle showing only processes with IO activity
221
222       p, P   Toggle showing processes/threads
223
224       a, A   Toggle showing accumulated/current values
225
226       ?, h, H
227              Toggle showing shortcut help
228
229       c, C   Toggle showing full command line
230
231       1, 2, 3, 4, 5, 6, 7, 8, 9
232              Toggle showing the column  (column  number  corresponds  to  the
233              shortcut)
234
235       0      Show all columns
236
237       i, I   IOnice a process/thread (depends on process/thread display mode)
238
239       f, F   Change UID and PID filters
240
241       u, U   Toggle using Unicode/ASCII characters for pseudo graph
242
243       x, X   Toggle the display mode of exited processes/threads between let‐
244              ter x and inverse background
245
246       s, S   Toggle freeze of data collection
247
248       Ctrl-T Toggle task_delayacct kernel sysctl
249

SEE ALSO

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

AUTHOR

254       The original Python iotop implementation was written by Guillaume Chaz‐
255       arain.   This  rewrite  in C was started in 2014 by Vyacheslav Trushkin
256       and reworked to include all missing features from the  original  Python
257       code and several new ones in 2020 and 2021 by Boian Bonev.
258
259       This manual page was started by Paul Wise for the Debian project and is
260       placed in the public domain.
261
262
263
264                               January 28, 2021                       IOTOP(8)
Impressum