LinuxCommandLibrary

iotop

Monitor disk I/O usage by process

TLDR

Start top-like I/O monitor

$ sudo iotop
copy

Show only processes or threads actually doing I/O
$ sudo iotop [[-o|--only]]
copy

Show I/O usage in non-interactive mode
$ sudo iotop [[-b|--batch]]
copy

Show only I/O usage of processes (default is to show all threads)
$ sudo iotop [[-P|--processes]]
copy

Show I/O usage of given PID(s)
$ sudo iotop [[-p|--pid]] [PID]
copy

Show I/O usage of a given user
$ sudo iotop [[-u|--user]] [user]
copy

Show accumulated I/O instead of bandwidth
$ sudo iotop [[-a|--accumulated]]
copy

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.

SEE ALSO

top(1), htop(1), iostat(1), pidstat(1), sar(1)

Copied to clipboard