5

Iotop—Linux上监控磁盘I/O的利器详细使用说明

 1 year ago
source link: https://blog.51cto.com/sharepointchina/5953353
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Iotop 工具是一个免费的开源免费工具,用于监控 Linux 中的磁盘输入/输出 (IO) 使用情况。它可以帮助系统管理员找到消耗更多磁盘使用的特定进程,并有助于性能分析。

Iotop—Linux上监控磁盘I/O的利器详细使用说明_迭代

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

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

先决条件

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

Python >= 2.7
Linux 内核 ≥ 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 iotop
or
#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 install

iotop 用法

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

$ iotop
Netlink 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/s
Actual 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/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 59.50 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1240 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/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
468 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 -a
5568 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—Linux上监控磁盘I/O的利器详细使用说明_系统架构_02

Iotop 选项

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

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

# iotop -b -n1
Total DISK READ: 0.00 B/s | Total 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/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-daemon
2053 be/4 rtkit 0.00 B/s 0.00 B/s 0.00 % 0.00 % rtkit-daemon
6 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-2
10 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 raghu
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
2057 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconfd-2
2081 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gvfs-afc-volume-monitor
2082 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % caja
2139 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % clock-applet
2084 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % matecomponent-activation-server --ac-activate --ior-output-fd=18
2087 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-bluetooth-applet
2088 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-volume-control-applet
7247 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % chromium-browser --disable-new-tab-first-run --enable-user-scripts
2055 be/4 raghu 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconf-helper

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

# iotop -d 3

最后,该--version选项打印 iotop 的版本号。

# iotop --version
iotop 0.4.4

Iotop 关键字快捷键

让我们检查一些使用 iotop 的有用的关键字快捷方式。

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

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

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

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK