iotop - 一个简单的类似 top 的 I/O 监控工具
概要
iotop [选项]
描述
iotop 监视 Linux 内核(需要 2.6.20 或更高版本)输出的 I/O 使用信息,并显示系统中进程或线程的当前 I/O 使用情况表。至少需要在你的 Linux 内核构建配置中启用 `CONFIG_TASK_DELAY_ACCT`、`CONFIG_TASK_IO_ACCOUNTING`、`CONFIG_TASKSTATS` 和 `CONFIG_VM_EVENT_COUNTERS` 选项,并且自 Linux 内核 5.14 以来,需要启用 `kernel.task_delayacct` sysctl。
iotop 显示每个进程/线程在采样期间读取和写入的 I/O 带宽的列。它还显示线程/进程在交换和等待 I/O 期间花费的时间百分比。对于每个进程,显示其 I/O 优先级(类/级别)。
此外,总 I/O 带宽在界面顶部显示,用于读取和写入采样期间的数据。总“磁盘读取”和总“磁盘写入”值表示进程和内核线程与内核块设备子系统之间读取和写入的总带宽。而当前“磁盘读取”和当前“磁盘写入”值表示当前磁盘 I/O 的相应带宽,即内核块设备子系统和底层硬件(HDD、SSD 等)之间的带宽。因此,由于 Linux 内核中发生的数据缓存和 I/O 操作重新排序,因此在任何给定时刻,总值和当前值可能不相等。
使用左右箭头更改排序,使用 r 切换排序顺序,使用 o 切换 --only 选项,使用 p 切换 --processes 选项,使用 a 切换 --accumulated 选项,使用 q 退出或使用 i 更改线程或进程的线程的优先级。任何其他键将强制刷新。
选项
--version
显示版本号并退出
-h, --help
显示用法信息并退出
-o, --only
仅显示实际执行 I/O 的进程或线程,而不是显示所有进程或线程。这可以通过按 o 键动态切换。
-b, --batch
启用非交互模式。适用于随着时间的推移记录 I/O 使用情况。
-n NUM, --iter=NUM
设置在退出之前迭代的次数(默认情况下永不退出)。这在非交互模式下最有用。
-d SEC, --delay=SEC
设置迭代之间的延迟(以秒为单位)(默认值为 1 秒)。接受非整数值,例如 1.1 秒。
-p PID, --pid=PID
要监视的进程/线程列表(默认情况下为所有)。
-u USER, --user=USER
要监视的用户列表(默认情况下为所有)。
-P, --processes
仅显示进程。通常,iotop 显示所有线程。
-a, --accumulated
显示累积的 I/O,而不是带宽。在这种模式下,iotop 显示进程自 iotop 启动以来所执行的 I/O 量。
-k, --kilobytes
使用千字节而不是人类可读的单位。这种模式在编写 iotop 的批处理脚本时很有用。iotop 不会选择最合适的单位,而是以千字节为单位显示所有大小。
-t, --time
在每一行添加时间戳(暗示 --batch)。每一行都将以当前时间作为前缀。
-q, --quiet
抑制一些标题行(暗示 --batch)。此选项最多可以指定三次,以删除标题行。
--no-help
禁止显示键盘快捷键帮助。 -q 仅在第一次迭代时打印列名, -qq 从不打印列名, -qqq I/O 摘要从不打印。
参见
ionice(1), top(1), vmstat(1), atop(1), htop(1)
作者
iotop 由 Guillaume Chazarain 编写。
此手册页由 Paul Wise 为 Debian 项目编写,并置于公共领域。