Iotop 工具是一个免费的开源免费工具,用于监控 Linux 中的磁盘输入/输出 (IO) 使用情况。它可以帮助系统管理员找到消耗更多磁盘使用的特定进程,并有助于性能分析。
从 内核开始支持 Iotop 工具。本教程介绍了如何在 linux 中安装和使用 iotop。
先决条件
Iotop 安装需要低于最低版本的 python 和内核。
Python >=
Linux 内核 ≥
在 Linux 上安装 iotop
让我们看看如何在 CentOS、Ubuntu、Fedora、Debian 和 Linux Mint 上安装 iotop。
在 Ubuntu、Debian 和 Linux Mint 上
#sudo apt-get install iotop
在 CentOS、Fedora 和 RHEL 上
#sudo yum -y install iotop
or
#sudo dnf install iotop
另一种选择是通过下载 gzipped 或 bzipped 文件并解压缩来从源代码安装。然后使用“setup.py”文件安装。iotop 是用 Python 编写的,它是 iotop 安装的先决条件。
使用以下命令提取和安装 iotop:
# tar -xjvf iotop-.tar.bz2
# cd iotop-/
# ./setup.py install
iotop 用法
iotop 命令必须以 root 用户身份运行。作为普通用户,当您运行此命令时,会出现以下错误:
$ iotop
Netlink error: Operation not permitted (1)
iotop requires root or the NET_ADMIN capability.
默认情况下,iotop 是一个类似于top 命令的交互式命令。
样本输出:
Total DISK READ : B/s | Total DISK WRITE : B/s
Actual DISK READ: B/s | Actual DISK WRITE: B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root B/s B/s % % systemd --switched-root --system --deserialize
2 be/4 root B/s B/s % % [kthreadd]
3 be/0 root B/s B/s % % [rcu_gp]
4 be/0 root B/s B/s % % [rcu_par_gp]
6 be/0 root B/s B/s % % [kworker/0:0H-kblockd]
8 be/0 root B/s B/s % % [mm_percpu_wq]
9 be/4 root B/s B/s % % [ksoftirqd/0]
be/4 root B/s B/s % % [rcu_sched]
rt/4 root B/s B/s % % [migration/0]
rt/4 root B/s B/s % % [watchdog/0]
be/4 root B/s B/s % % [cpuhp/0]
be/4 root B/s B/s % % [kdevtmpfs]
be/0 root B/s B/s % % [netns]
be/4 root B/s B/s % % [kauditd]
be/4 root B/s B/s % % [khungtaskd]
be/4 root B/s B/s % % [oom_reaper]
be/0 root B/s B/s % % [writeback]
be/4 root B/s B/s % % [kcompactd0]
be/5 root B/s B/s % % [ksmd]
be/7 root B/s B/s % % [khugepaged]
be/0 root B/s B/s % % [crypto]
在此输出中,在最顶部,第一行分为两列。
第一列显示每秒total DISK READ,第二列显示total DISK WRITE每秒。
以下几行对应于每个执行 IO 操作的进程。它列出了系统中每个进程的进程 ID、用户所有权、磁盘读取、磁盘写入、进程名称、swapin(每个进程的交换使用情况)。
如果您只想列出实际上正在执行任何磁盘 I/O 操作的活动进程,请在 iotop 运行时按 o(切换),或者使用-o选项 (iotop -o) 运行 iotop。
Total DISK READ : B/s | Total DISK WRITE : K/s
Actual DISK READ: B/s | Actual DISK WRITE: K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
be/4 root B/s B/s % % rsyslogd -n [rs:main Q:Reg]
be/3 root B/s B/s % % [jbd2/sda-8]
be/4 root B/s K/s % % rsyslogd -n [in:imjournal]
您可以通过按 退出 iotop 和 top 一样q。
以下输出是在运行任何 io 密集型进程时,例如 iozone。
Total DISK READ: K/s | Total DISK WRITE: M/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
be/3 root B/s K/s % % [jbd2/sda8-8]
be/4 root B/s M/s % % ./iozone -a
be/4 raghu K/s B/s % % totem /home/raghu/Downloads/ - Harjinder Singh - Mere Ram Rai.mp3
Iotop 选项
如上所述,该-o选项列出了实际执行磁盘 I/O 的进程。该-b选项以非交互式批处理模式运行 iotop。它可用于记录目的。
-n选项告诉批处理模式要执行的迭代次数:
# iotop -b -n1
Total DISK READ: B/s | Total DISK WRITE: B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
1 be/4 root B/s B/s % % init
2 be/4 root B/s B/s % % [kthreadd]
3 be/4 root B/s B/s % % [ksoftirqd/0]
be/4 rtkit B/s B/s % % rtkit-daemon
be/4 rtkit B/s B/s % % rtkit-daemon
6 rt/4 root B/s B/s % % [migration/0]
7 rt/4 root B/s B/s % % [watchdog/0]
8 rt/4 root B/s B/s % % [migration/1]
be/4 raghu B/s B/s % % gconfd- be/4 root B/s B/s % % [ksoftirqd/1]
rt/4 root B/s B/s % % [watchdog/1]
---Output Truncated---
该-u选项显示特定用户的进程。
# iotop -u raghu
Total DISK READ: B/s | Total DISK WRITE: B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
be/4 raghu B/s B/s % % gconfd- be/4 raghu B/s B/s % % gvfs-afc-volume-monitor
be/4 raghu B/s B/s % % caja
be/4 raghu B/s B/s % % clock-applet
be/4 raghu B/s B/s % % matecomponent-activation-server --ac-activate --ior-output-fd= be/4 raghu B/s B/s % % mate-bluetooth-applet
be/4 raghu B/s B/s % % mate-volume-control-applet
be/4 raghu B/s B/s % % chromium-browser --disable-new-tab-first-run --enable-user-scripts
be/4 raghu B/s B/s % % gconf-helper
-d选项设置迭代之间的延迟。
# iotop -d 3
最后,该--version选项打印 iotop 的版本号。
# iotop --version
iotop
Iotop 关键字快捷键
让我们检查一些使用 iotop 的有用的关键字快捷方式。
向左或向右移动箭头键以更改排序。
-h :- 查看使用信息的选项。
-r :- 反转排序顺序的选项。
-o :- 检查进程或线程的选项。
-b :- 打开非交互模式以启用记录 I/O 使用的选项。
-p :- PID 列出所有要监控的进程/线程。
-u :- USER 选项列出所有要监视的用户。
-P :- 仅列出进程的选项。通常 iotop 会显示所有线程。
-a :- 检查累积 I/O 而不是带宽的选项。
结论
当系统使用高磁盘 IO 或高交换使用率时,iotop 是性能分析必不可少的一把利器。
我新建了个技术微信群,欢迎同行扫码进入
喜欢的朋友记得给个关注~