Iotop-如何在Linux中监视磁盘IO

时间:2020-03-05 15:28:33  来源:igfitidea点击:

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

2.6.20内核支持Iotop工具。
本教程说明了如何在Linux中安装和使用iotop。

准备工作

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]

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

第一列显示“磁盘读取总数”,第二列显示“每秒磁盘写入总数”。

以下各行对应于执行IO操作的每个进程。
它列出了系统中每个进程的进程ID,用户所有权,磁盘读取,磁盘写入,进程名称,交换(交换每个进程的使用情况)。

如果要仅列出实际上正在执行任何磁盘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]

我们可以通过按'q'从iotop像top一样退出。

运行任何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 igi 123.96 K/s 0.00 B/s 0.00 % 0.00 % totem /home/igi/Downloads/01 - Harjinder Singh - Mere Ram Rai.mp3

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 igi 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 igi
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 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % gconfd-2
2081 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % gvfs-afc-volume-monitor
2082 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % caja
2139 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % clock-applet
2084 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % matecomponent-activation-server --ac-activate --ior-output-fd=18
2087 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-bluetooth-applet
2088 be/4 igi 0.00 B/s 0.00 B/s 0.00 % 0.00 % mate-volume-control-applet
7247 be/4 igi 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 igi 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而不是带宽的选项。