Linux 命令:iotop

1. 写在前面

本文主要介绍 Linux iotop 或 Input/Output top 命令:用于显示和监控磁盘 IO 使用详情,甚至获取进程现有 IO 使用情况。它是用 python 设计的,需要内核模块才能执行。系统管理员可以用它来追踪可能导致磁盘 I/O 读写量过高的特定进程。

它需要一个 python 解释器来执行。其输出结果与 top 命令类似。通常需要 root 权限才能执行。

2. iotop 命令

2.1 安装

  • CentOS/RHEL:

sudo yum install iotop
  • ubuntu:

sudo apt install iotop

2.2 使用 iotop 命令

命令参数

-o:只显示有io操作的进程;
-b:批量显示,无交互,主要用作记录到文件;
-n NUM:显示NUM次,主要用于非交互式模式;
-d SEC:间隔SEC秒显示一次;
-p PID:监控的进程pid;
-u USER:监控的进程用户;

iotop 常用快捷键

左右箭头:改变排序方式,默认是按IO排序;
r:改变排序顺序;
o:只显示有IO输出的进程;
p:进程/线程的显示方式的切换;
a:显示累积使用量;
q:退出;

输出详解

整体 IO 输出解释:

Total DISK READ
Total DISK WRITE
表示了进程和内核线程之间的总的读写带宽,另一方面也表示内核块设备子系统的。

Current DISK READ
Current DISK WRITE
表示在内核块设备子系统和下面硬件(HDD、SSD 等等)对应的实际磁盘 I/O 带宽。

进程 IO 输出解释:

TID                线程号或进程号
PRIO 线程运行时的I/O优先级
USER 进程所属用户
DISK
READ 刷新时间间隔内读取数据量
DISK WRITE 刷新时间间隔内写入数据量
SWAPIN 每个进程的交换使用率
IO 每个进程的 I/O 利用率,包含磁盘和交换
COMMAND 进程名字

2.2.1 获取进程列表及其当前磁盘 IO 使用情况

root@dev:~# sudo iotop
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 3.40 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 13.61 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
296 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.05 % [jbd2/vda1-8]
2836 be/4 systemd- 0.00 B/s 3.40 K/s 0.00 % 0.03 % beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048~syslog_error_logger false -kernel prevent_overlapping_partitions false [3_dirty_io_sche]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
6 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H-kblockd]
8 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [mm_percpu_wq]
9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]
10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_sched]
11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/
... ...
keys: any: refresh q: quit i: ionice o: active p: procs a: accum
sort: r: asc left: SWAPIN right: COMMAND home: TID end: COMMAND

该命令将显示进程列表及其当前磁盘使用情况,并不断更新。

2.2.2 仅显示有 IO 操作的进程

root@dev:~# sudo iotop -o
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 3.84 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 15.36 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
296 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.05 % [jbd2/vda1-8]
2836 be/4 systemd- 0.00 B/s 3.84 K/s 0.00 % 0.03 % beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048~syslog_error_logger false -kernel prevent_overlapping_partitions false [3_dirty_io_sche]
keys: any: refresh q: quit i: ionice o: all p: procs a: accum
sort: r: asc left: SWAPIN right: COMMAND home: TID end: COMMAND

这将显示当前正在执行 IO 的所有进程。

2.2.3 获取 iotop 的版本

root@dev:~# sudo iotop --version
----------------------------------------------------------------------------
iotop 0.6

显示当前安装的 iotop 工具版本。

2.2.4 显示帮助信息

root@dev:~# sudo iotop -h
----------------------------------------------------------------------------
Usage: /usr/sbin/iotop [OPTIONS]

DISK READ and DISK WRITE are the block I/O bandwidth used during the sampling
period. SWAPIN and IO are the percentages of time the thread spent respectively
while swapping in and waiting on I/O more generally. PRIO is the I/O priority
at which the thread is running (set using the ionice command).

Controls: left and right arrows to change the sorting column, r to invert the
sorting order, o to toggle the --only option, p to toggle the --processes
option, a to toggle the --accumulated option, i to change I/O priority, q to
quit, any other key to force a refresh.

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-o, --only only show processes or threads actually doing I/O
-b, --batch non-interactive mode
-n NUM, --iter=NUM number of iterations before ending [infinite]
-d SEC, --delay=SEC delay between iterations [1 second]
-p PID, --pid=PID processes/threads to monitor [all]
-u USER, --user=USER users to monitor [all]
-P, --processes only show processes, not all threads
-a, --accumulated show accumulated I/O instead of bandwidth
-k, --kilobytes use kilobytes instead of a human friendly unit
-t, --time add a timestamp on each line (implies --batch)
-q, --quiet suppress some lines of header (implies --batch)
--no-help suppress listing of shortcuts

显示 iotop 工具的帮助信息。

2.2.5 以非交互模式显示输出

root@dev:~# sudo iotop -b
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
6 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H-kbl
... ...

批量显示,无交互,主要用作记录到文件。

例如:

sudo iotop -b > iotop.txt

2.2.6 限制刷新时间间隔及次数

root@dev:~# sudo iotop -d 2 -n 3

限制 2s 刷新1次,刷新三次信息后结束。

2.2.7 指定进程 PID/ USER

  • 显示进程 1 IO使用情况:

root@dev:~# sudo iotop -p 1
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
keys: any: refresh q: quit i: ionice o: active p: procs a: accum
sort: r: asc left: SWAPIN right: COMMAND home: TID end: COMMAND

显示 PID 为 1 的进程的 IO 使用情况。

  • 显示 root 用户下进程的 IO 信息:

root@dev:~# sudo  iotop -u root 
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 10.19 K/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 20.37 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
296 be/3 root 0.00 B/s 10.19 K/s 0.00 % 0.10 % [jbd2/vda1-8]
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % i
... ...

2.2.8 累计显示 IO

root@dev:~# sudo iotop -a
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
296 be/3 root 0.00 B 196.00 K 0.00 % 0.05 % [jbd2/vda1-8]
2839 be/4 systemd- 0.00 B 20.00 K 0.00 % 0.01 % beam.smp -W w -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048~syslog_error_logger false -kernel prevent_overlapping_partitions false [6_dirty_io_sche]
2794 be/4 root 16.00 K 16.00 K 0.00 % 0.01 % minio server /data --console-address :42115 --address :9000
2797 be/4 root 20.00 K 8.00 K 0.00 % 0.00 % minio server /data --console-address :42115 --address :9000
2897 be/4 root 0.00 B 1992.00 K 0.00 % 0.00 % minio server /data --console-address :42115 --address :9000
... ...
keys: any: refresh q: quit i: ionice o: active p: procs a: bandwidth

以累计方式显示信息,数据从 iotop 命令启动开始做计算。

2.2.9 添加时间

root@dev:~# sudo iotop -t
----------------------------------------------------------------------------
00:17:42 Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
00:17:42 Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
00:17:42 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
00:17:42 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
00:17:42 3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
00:17:42 4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
00:17:42 6 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H-kblockd]

这将在输出的每一行添加时间。

2.2.10 列标题打印限制

  • 列标题只在第一次迭代时打印

root@dev:~# sudo iotop -q
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
... ...
  • 不打印列标题

root@dev:~# sudo iotop -qq
----------------------------------------------------------------------------
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
... ...
  • 不会打印 I/O 摘要

root@dev:~# iotop -qqq 
----------------------------------------------------------------------------
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_gp]
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [rcu_par_gp]
6 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H-kblockd]

2.2.11 以 kB 单位显示读写数据信息

root@dev:~# iotop -k
----------------------------------------------------------------------------
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
Current DISK READ: 0.00 K/s | Current DISK WRITE: 0.00 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 K/s 0.00 K/s 0.00 % 0.00 % init
2 be/4 root 0.00 K/s 0.00 K/s 0.00 % 0.00 % [kthreadd]
3 be/0 root 0.00 K/s 0.00 K/s 0.00 % 0.00 % [rcu_gp]
4 be/0 root 0.00 K/s 0.00 K/s 0.00 % 0.00 % [rcu_par_gp]

感谢您花时间阅读文章

收藏本站不迷路

原文始发于微信公众号(滑翔的纸飞机):Linux 命令:iotop

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/260946.html

(0)
土豆大侠的头像土豆大侠

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!