准备
检查是否有iotop命令,没有的话装一下,以centos为例:yum -y install iotop
iotop
iotop命令是一个用来监视磁盘I/O使用状况的top类工具,python 语言编写。根据Linux内核(需要2.6.20及以上)来监测I/O,并且能显示当前进程/线程的I/O使用率。
选项
更详细的选项描述,老规矩找man:man iotop
选项 | 描述 |
---|---|
- -version | 显示版本号然后退出 |
-h, - -help | 显示帮助然后退出 |
-o, - -only | 只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。 |
-b, - -batch | 非交互模式,一般用来记录日志 |
-n NUM, - -iter=NUM | 设置监测的次数,默认无限。在非交互模式下很有用 |
-d SEC, - -delay=SEC | 设置每次监测的间隔,默认1秒,接受非整形数据例如1.1 |
-p PID, - -pid=PID | 指定监测的进程/线程 |
-u USER, - -user=USER | 显示指定的用户的进程的信息 |
-P, - -processes | 仅显示进程,默认iotop显示所有线程 |
-a, - -accumulated | 累积的I/O,更加利于查看问题,显示从iotop启动后每个线程完成了的IO总数 |
-k, - -kilobytes | 使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。 |
-t, - -time | 加上时间戳,非交互非模式。 |
-q, - -quiet | 禁止头几行,非交互模式。有三种指定方式。 |
-q | 只在第一次监测时显示列名 |
永远不显示列名。 | |
-qqq | 永远不显示I/O汇总。 |
使用
- 只显示产生io的进程
[root@db25440 ~]# iotop -o
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
也可以使用交互式模式,在运行过程中按下交互命令o
- 使用非交互式执行
输出滚动显示,无法执行交互命令,一般用来记录日志,ctrl+c结束
[root@db25440 ~]# iotop -b
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
……
扩展
若不使用-b选项启动iotop,是可以交互的,可以在运行期间执行一些命令,如下:
|交互命令|描述|
|:-|:-|
|左右箭头|改变排序的列|
|r|反向排序,按io|
|o|切换至选项–only|
|p|切换至–processes选项|
|a|切换至–accumulated选项|
|q|退出 |
|i|改变线程的优先级|
交互模式下除了以上这些交互命令键之外的任意键都会强制刷新
- 执行次数和执行频率
使用非交互式,可以非常清晰看出一共监控几次,-n 2指监控2次,-d 5 表示5秒刷新一次
[root@db25440 ~]# iotop -b -n 2 -d 5
- 执行指定pid和指定用户
-p和-u参数
[root@db25440 ~]# iotop -b -n 2 -d 5 -p 25129 -u mysql
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
25129 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld ……
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
25129 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld ……
- 打印时间戳和指定输出单位为kb
看输出第一列的时间戳和 diskRead、diskWrite的单位由默认变为K
[root@db25440 ~]# iotop -b -n 2 -d 5 -p 25129 -u mysql -t -k
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
18:09:29 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
18:09:34 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
[root@db25440 ~]#
- 静默输出
[root@db25440 ~]# iotop -b -n 2 -d 5 -p 25129 -u mysql -t -k -q
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
18:11:20 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
18:11:25 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
[root@db25440 ~]#
[root@db25440 ~]#
[root@db25440 ~]# iotop -b -n 2 -d 5 -p 25129 -u mysql -t -k -qq
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
18:11:32 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
Total DISK READ: 0.00 K/s | Total DISK WRITE: 0.00 K/s
18:11:37 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
[root@db25440 ~]#
[root@db25440 ~]#
[root@db25440 ~]# iotop -b -n 2 -d 5 -p 25129 -u mysql -t -k -qqq
18:11:39 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
18:11:44 25129 be/4 mysql 0.00 K/s 0.00 K/s 0.00 % 0.00 % mysqld
[root@db25440 ~]#