IOTOP(8)
πΈ NAME πΈ
iotop(8) β from the System Manager's Manual β is the simple top-like I/O monitor. π
β¨ SYNOPSIS β¨
iotop [OPTIONS]
π DESCRIPTION π
Okay so 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. π Like, vibe check before you setcap, bestie.
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 cycle between the --accumulated, --accum-bw and normal operation, 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 π
-v,--versionβ Show the version number and exit β¨-h,--helpβ Show usage information and exit π«Ά-H,--help-type=TYPEβ Set the type of interactive help shown. Accepted values for TYPE arenone,winandinline. π-o,--onlyβ Only show processes or threads actually doing I/O, instead of showing all processes or threads. This can be dynamically toggled by pressingoπ--no-onlyβ Show all processes or threads-b,--batchβ Turn on non-interactive mode. Useful for logging I/O usage over time π-n NUM,--iter=NUMβ Set the number of iterations before quitting (never quit by default). This is most useful in non-interactive mode π-d SEC,--delay=SECβ Set the delay between iterations in seconds (1 second by default). Accepts non-integer values such as1.1seconds β±οΈ-p PID,--pid=PIDβ A process/thread id to monitor (all by default) π―-u USER,--user=USERβ 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 π§-P,--processesβ Only show processes. Normallyiotopshows processes and all threads π§΅--no-processesβ Show processes and all threads π«Ά-a,--accumulatedβ Show accumulated I/O instead of bandwidth. In this mode,iotopshows the amount of I/O processes have done since the process oriotopstarted. Note that this option and--accum-bware exclusive and they will turn each other off π₯--no-accumulatedβ Show bandwidth (useful when changing config file with--write) πΎ-A,--accum-bwβ Show accumulated I/O as bandwidth for the whole sampling period. In this mode,iotopshows the amount of I/O per second for the whole period since the process oriotopstarted. Note that this option and--accumulatedare exclusive and they will turn each other off β‘--no-accum-bwβ Show bandwidth (useful when changing config file with--write) πΎ-k,--kilobytesβ Use kilobytes instead of a human friendly unit. This mode is useful when scripting the batch mode ofiotop. Instead of choosing the most appropriate unitiotopwill display all sizes in kilobytes π--no-kilobytesβ Use human friendly units πΈ-t,--timeβ Add a timestamp on each line (implies--batch). Each line will be prefixed by the current time π°οΈ-c,--fullcmdlineβ Show processes' full file path and parameters π§Ύ--no-fullcmdlineβ Show processes' names only π·οΈ-1,--hide-pidβ Hide PID/TID column π--show-pidβ Show PID/TID column π-2,--hide-prioβ Hide PRIO column π--show-prioβ Show PRIO column π-3,--hide-userβ Hide USER column π--show-userβ Show USER column π-4,--hide-readβ Hide DISK READ column π--show-readβ Show DISK READ column π-5,--hide-writeβ Hide DISK WRITE column π--show-writeβ Show DISK WRITE column π-6,--hide-swapinβ Hide SWAPIN column π--show-swapinβ Show SWAPIN column π-7,--hide-ioβ Hide IO column π--show-ioβ Show IO column π-8,--hide-graphβ Hide GRAPH column π--show-graphβ Show GRAPH column π-9,--hide-commandβ Hide COMMAND column π--show-commandβ Show COMMAND column π-g TYPE,--grtype=TYPEβ Set GRAPH column data source. Accepted values for TYPE areio,r,w,rwandsw. π-R,--reverse-graphβ Reverse GRAPH direction - show most recent values on the right side π--no-reverse-graphβ Do not reverse GRAPH direction - show most recent values on the left side π-q,--quietβ Suppress headers before each run (implies--batch). This option can be specified up to three times to suppress the output of different header lines:-qcolumn names are only printed on the first iteration,-qqcolumn names are never printed,-qqqthe I/O summary is never printed π€«
-x,--dead-xβ Show exited processes/threads with letterxinstead of inverse background π--no-dead-xβ Show exited processes/threads with inverse background πͺ¦-e,--hide-exitedβ Hide exited processes π«₯--show-exitedβ Show exited processes π»-l,--no-colorβ Do not colorize values π«π--colorβ Colorize values. This will override the effect of the environment variableNO_COLORwhen explicitly specified on the command line. π-T,--hide-timeβ Do not show time clock in upper right corner β³--show-timeβ Show time clock in upper right corner π°οΈ--siβ Use SI units of 1000 when printing values. The default is non-SI 1024 π’--no-siβ Use non-SI units of 1024 when printing values π’--threshold=1..10β Set the threshold to switch to next unit. The default value is 2 ποΈ--asciiβ Disable using Unicode π€--unicodeβ Use Unicode drawing chars π¨-N,--inverseβ Use inverse interface (black on white) β«βͺ--filter=REGEXβ Filter processes by TID and COMMAND. This will only show processes where TID or COMMAND are matching the REGEX. π-W,--writeβ Merge the preceding options to the current config, save the config and exit. Note that all options after this one will be ignored. π
β¨οΈ KEYBOARD SHORTCUTS π β¨
bestie, these keys are your little remote control. press them, slay, repeat. π
q,Qβ Exit. bye bestie, you ate πWβ Save current settings to configuration file in a place conforming to XDG Base Directory Specification. The respective path is created in case it does not exist. In case of error creating or accessing the config file, the error is silently ignored and the configuration is not saved.$XDG_CONFIG_HOME/iotop/iotoprcβ if environment variableXDG_CONFIG_HOMEis set.$HOME/.config/iotop/iotoprcβ if environment variableXDG_CONFIG_HOMEis not set butHOMEis set..config/iotop/iotoprcβ if neitherXDG_CONFIG_HOMEnorHOMEare set.
Dβ Reset all settings to their default values. factory reset, but make it cute β¨<space>,rβ Toggle sort order. flip it, reverse it, periodt π<home>β Scroll to the top of the list. take me to the top, main character energy π<end>β Scroll to the bottom of the list. and down we go π¦<page-up>β Scroll one screen up. one screen closer to the sky β¨<page-down>β Scroll one screen down. one screen deeper into the lore π<up>β Scroll one line up. baby steps, bestie πΎ<down>β Scroll one line down. we love a gentle scroll π<right>β Sort by next column. next column, next vibe π<left>β Sort by previous column. back it up, rewind π<esc>β Cancel ionice or filter selection. In case only the help window is open then close it. escape the situation, we love boundaries πo,Oβ Toggle showing only processes with IO activity. only the busy ones, we stan a filter β¨p,Pβ Toggle showing processes/threads. processes or threads, choose your fighter πa,Aβ Cycle showing accumulated/accum-bw/current values. the data is data-ing π₯?β Toggle showing inline help. when in doubt, ask the question mark π§h,Hβ Toggle showing window help. help window says hi πc,Cβ Toggle showing full command line. show me the whole command, no secrets π1,2,3,4,5,6,7,8,9β Toggle showing the column (column number corresponds to the shortcut). one key, one column, so satisfying π0β Show all columns. all of them, every single one, periodt πg,Gβ Cycle GRAPH source (IO=IO, R=DISK READ , W=DISK WRITE, R+W=DISK READ+DISK WRITE, SW=SWAPIN). Usinggwill cycle forward andGwill cycle backward. graph go brrr πRβ Toggle reverse GRAPH direction. reverse card, uno! πi,Iβ IOnice a process/thread (depends on process/thread display mode). be nice, or else πf,Fβ Change UID and PID filters. filter by UID and PID, we love a targeted search π―u,Uβ Toggle using Unicode/ASCII characters for pseudo graph. unicode or ASCII, both are valid πl,Lβ Toggle colorizing values. color makes everything better, no cap πn,Nβ Toggle inverse interface (black on white). inverse interface, black on white, iconic πx,Xβ Toggle the display mode of exited processes/threads between letter x and inverse background. exited but still showing up, ghosting fr πe,Eβ Toggle the display of exited processes. show the exited ones or hide them, your call πTβ Toggle the display of time clock in upper right corner. clock in the corner, it's giving time management β°s,Sβ Toggle freeze of data collection. freeze! stop! hammer time π§Ctrl-B,bβ Toggle SI units. SI units, we love the metric system πCtrl-R,tβ Cycle unit threshold. threshold cycle, round and round πCtrl-Tβ Toggle task_delayacct kernel sysctl. kernel sysctl says hello π§Ctrl-Lβ Redraw screen. refresh, refresh, refresh β¨/β 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>. regex girlies rise π
List of shortcuts in the editor:
<esc>β Cancel editing and remove the regular expression filter. escape the regex, we love an exit strategy πͺ<enter>β Confirm the current regular expression and exit edit mode. In case the regular expression is empty or invalid it will match everything. enter to confirm, slay βAlt/Meta-<backspace>,Ctrl-Wβ Delete one word from cursor to the left. delete that word, left side π§ΉAlt/Meta-Dβ Delete one word from cursor to the right. delete that word, right side π§½Alt/Meta-B,Ctrl-<left>β Move the cursor to the beginning of the word on the left. jump to the left word start, iconic πAlt/Meta-F,Ctrl-<right>β Move the cursor after the end of the word on the right. jump to the right word end, periodt πCtrl-A,<home>β Move the cursor to the leftmost position. all the way left, home sweet home πCtrl-E,<end>β Move the cursor after the last character. all the way right, end game πCtrl-B,<left>β Move the cursor to the left. left, left, left πCtrl-F,<right>β Move the cursor to the right. right, right, right π¦Ctrl-H,<backspace>β Delete the character left of cursor. backspace goes brrr π₯Ctrl-D,<del>β Delete the character under the cursor. delete under cursor, no hesitation πCtrl-Kβ Delete from the character under the cursor to the end of the line. cut the rest of the line, slay βοΈCtrl-Uβ Delete everything. nuke it, start fresh π£[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. the catch-all, and it's lowkey iconic π
π ENVIRONMENT π
NO_COLORβ As per the recommendation ofhttps://www.no-color.org/iotop honors the contents of the environment variableNO_COLORand when it is set to a non empty string, all color output is suppressed. no color means no color, bestie πHOME,XDG_CONFIG_HOMEβ Used to determine the config file path. See theWshortcut for details. config file detective work π΅οΈββοΈIOTOP_NO_RENICEβ Disable theishortcut. The user will not be able to change processes' nice values. no nice for you π€
π SEE ALSO π
π 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 2025 by Boian Bonev.
This manual page was started by Paul Wise for the Debian project and is placed in the public domain.
this page is from January 13, 2025 and it's the IOTOP(8) manual. stay iconic, bestie πβ¨
π¦ where this page comes from
- debian trixie: iotop-c 1.30-1 Β· GPL-2.0-or-later
- nixos 26.05: iotop-c 1.31
- ubuntu questing: iotop-c 1.30-1
- ubuntu resolute: iotop-c 1.31-1 Β· GPL-2.0-or-later
- ubuntu stonking: iotop-c 1.31-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms