iotop
Monitor disk I/O usage by process
TLDR
Start top-like I/O monitor
Show only processes or threads actually doing I/O
Show I/O usage in non-interactive mode
Show only I/O usage of processes (default is to show all threads)
Show I/O usage of given PID(s)
Show I/O usage of a given user
Show accumulated I/O instead of bandwidth
SYNOPSIS
iotop [options]
PARAMETERS
-a, --accumulated
Show total I/O instead of bandwidth
-b, --batch
Non-interactive batch mode (implies -n2)
-d SEC, --delay=SEC
Delay between updates (default: 1s)
-F FREQ, --frequency=FREQ
Update frequency in Hz (default: 1)
-h, --help
Display help and exit
-k, --kilobytes
Display values in KiB/s instead of auto-unit
-n NUM, --iterations=NUM
Number of iterations (default: infinite)
-N, --nofilter
Disable all filters
-o, --only
Show only processes doing I/O
-p PID, --pid=PID
Monitor specific PID (repeatable)
-P, --processes
Show processes instead of threads
-q, --quiet
Suppress warnings and status
-u USER, --user=USER
Monitor processes for USER (repeatable)
-V, --version
Display version info and exit
DESCRIPTION
Iotop is a top-like utility that provides an interactive, real-time view of disk I/O consumption by Linux processes and threads. Similar to top(1) for CPU and memory, iotop displays read/write rates, I/O wait times, and total I/O for each process. It leverages kernel features like taskstats (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING) to gather data via the netlink interface.
Run as root to access all processes; non-root users see only their own. The interface shows DISK READ, DISK WRITE, IO>, SWAPIN columns, with sortable fields. Filters by PID, user, or I/O activity help focus on culprits. Batch mode outputs data for scripting, and accumulated stats track totals over time.
Ideal for diagnosing high I/O load, slow disks, or I/O-bound processes. Requires a modern kernel (2.6.20+) with accounting enabled; check via grep TASK_IO_ACCOUNTING /boot/config-$(uname -r). Not all filesystems or devices report accurately.
CAVEATS
Requires root privileges for full visibility; kernel must support task I/O accounting (check /proc/config.gz). Inaccurate for network/block devices without support; high CPU overhead in batch mode.
KEYBOARD SHORTCUTS
←/→: change sort column; r: reverse sort; o: toggle only I/O processes; a: toggle accumulated; q: quit; p/u: set PID/user filter.
COLUMNS
TID: thread/process ID; PRIO: I/O priority; DISK READ/WRITE: bandwidth; SWAPIN: swap I/O; IO>: % time waiting; COMMAND: executable.
HISTORY
Created by Vitezslav Cizek in 2007 for Fedora. Python-based initially, rewritten in C by Lennart Poettering (2008). Maintained in major distros; version 0.6 (2015) added frequency option.


