从 2.6.20 内核开始支持 Iotop 工具。
本教程先容了如何在 linux 中安装和利用 iotop。

先决条件

Iotop 安装须要低于最低版本的 python 和内核。

jspappletclockIotopLinux上监控磁盘I/O的利器具体应用解释 Node.js

Python >= 2.7Linux 内核 ≥ 2.6.20

在 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 iotopor #sudo dnf install iotop

另一种选择是通过下载 gzipped 或 bzipped 文件并解压缩来从源代码安装。
然后利用“setup.py”文件安装。
iotop 是用 Python 编写的,它是 iotop 安装的先决条件。

利用以下命令提取和安装 iotop:

# tar -xjvf iotop-0.4.4.tar.bz2# cd iotop-0.4.4/# ./setup.py installiotop 用法

iotop 命令必须以 root 用户身份运行。
作为普通用户,当您运行此命令时,会涌现以下缺点:

$ iotopNetlink error: Operation not permitted (1)iotop requires root or the NET_ADMIN capability.

默认情形下,iotop 是一个类似于top 命令的交互式命令。

样本输出:

Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/sActual DISK READ: 0.00 B/s | Actual 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 % systemd --switched-root --system --deserialize 17 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/0] 12 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 13 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [cpuhp/0] 15 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kdevtmpfs] 16 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [netns] 17 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kauditd] 18 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khungtaskd] 19 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [oom_reaper] 20 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [writeback] 21 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kcompactd0] 22 be/5 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksmd] 23 be/7 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khugepaged] 24 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [crypto]

在此输出中,在最顶部,第一行分为两列。

第一列显示每秒total DISK READ,第二列显示total DISK WRITE每秒。

以下几行对应于每个实行 IO 操作的进程。
它列出了系统中每个进程的进程 ID、用户所有权、磁盘读取、磁盘写入、进程名称、swapin(每个进程的交流利用情形)。

如果您只想列呈现实上正在实行任何磁盘 I/O 操作的活动进程,请在 iotop 运行时按 o(切换),或者利用-o选项 (iotop -o) 运行 iotop。

Total DISK READ : 0.00 B/s | Total DISK WRITE : 3.97 K/sActual DISK READ: 0.00 B/s | Actual DISK WRITE: 59.50 K/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND1240 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.02 % rsyslogd -n [rs:main Q:Reg]400 be/3 root 0.00 B/s 0.00 B/s 0.00 % 0.01 % [jbd2/sda-8]1236 be/4 root 0.00 B/s 3.97 K/s 0.00 % 0.00 % rsyslogd -n [in:imjournal]

您可以通过按 退出 iotop 和 top 一样q。

以下输出是在运行任何 io 密集型进程时,例如 iozone。

Total DISK READ: 123.96 K/s | Total DISK WRITE: 14.16 M/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND468 be/3 root 0.00 B/s 104.59 K/s 0.00 % 56.66 % [jbd2/sda8-8]7083 be/4 root 0.00 B/s 13.80 M/s 0.00 % 36.45 % ./iozone -a5568 be/4 raghu 123.96 K/s 0.00 B/s 0.00 % 0.00 % totem /home/raghu/Downloads/01 - Harjinder Singh - Mere Ram Rai.mp3

Iotop 选项

如上所述,该-o选项列出了实际实行磁盘 I/O 的进程。
该-b选项以非交互式批处理模式运行 iotop。
它可用于记录目的。

-n选项见告批处理模式要实行的迭代次数:

# iotop -b -n1Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0]2052 be/4 rtkit 0.00 B/s 0.00 B/s 0.00 % 0.00 % rtkit-daemon2053 be/4 rtkit 0.00 B/s 0.00 B/s 0.00 % 0.00 % rtkit-daemon6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0]7 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0]8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1]2057 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconfd-210 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1]11 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1]---Output Truncated---

该-u选项显示特定用户的进程。

# iotop -u raghuTotal DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/sTID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND2057 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconfd-22081 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gvfs-afc-volume-monitor2082 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % caja2139 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % clock-applet2084 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % matecomponent-activation-server --ac-activate --ior-output-fd=182087 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-bluetooth-applet2088 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-volume-control-applet7247 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % chromium-browser --disable-new-tab-first-run --enable-user-scripts2055 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconf-helper

-d选项设置迭代之间的延迟。

# iotop -d 3

末了,该--version选项打印 iotop 的版本号。

# iotop --versioniotop 0.4.4Iotop 关键字快捷键

让我们检讨一些利用 iotop 的有用的关键字快捷办法。

向左或向右移动箭头键以变动排序。

-h :- 查看利用信息的选项。
-r :- 反转排序顺序的选项。
-o :- 检讨进程或线程的选项。
-b :- 打开非交互模式以启用记录 I/O 利用的选项。
-p :- PID 列出所有要监控的进程/线程。
-u :- USER 选项列出所有要监视的用户。
-P :- 仅列出进程的选项。
常日 iotop 会显示所有线程。
-a :- 检讨累积 I/O 而不是带宽的选项。

结论

当系统利用高磁盘 IO 或高交流利用率时,iotop 是性能剖析必不可少的一把利器。

我新建了个技能微信群,欢迎同行扫码进入

喜好的朋友记得给个关注~