一、iotop工具介绍

I/O可谓是数据库\服务器的最大瓶颈问题了,在使用top、nmon、zabbix、sar等工具监控I/O时,要么没有I/O监控(如top、zabbix),要么仅仅监控到磁盘层面(如nmon、sar)。然而,当服务器出现问题时,我们更想了解的是哪个进程占用了较多的I/O,这种情况下就可以使用iotop命令来监控。

redhat linux 5.5自带了iotop工具,无需手动安装。查看是否安装了iotop工具:

[root@OCP ~]# which iotop
/usr/sbin/iotop

如果要了解iotop如何使用,可以使用man命令:

[root@OCP ~]# man iotop

 

二、iotop工具用法

iotop [-选项]

选项有:

选项 解释 示例
-o 只显示有I/O操作的进程或线程,即存在disk read或disk write。 iotop -o
-b 批量显示,无交互,主要用于记录到文件 iotop -b >> iotop.txt
-n NUM 显示NUM次,主要用于非交互模式 iotop -b -n 3 >> iotop.txt
-d SEC 间隔SEC秒更新一次数据,默认1s iotop –d 5
-p PID 列出监控的进程,默认全部 iotop –p 3313(仅监控3313进程)
-u USER 列出需要监控的用户,默认所有用户 iotop –u oracle
   

 

iotop的快捷键:

左右箭头:改变排序,默认按照IO使用百分比排序

r         :反转排序结果

o        :只显示有I/O的进程和线程

a        :显示累积使用量

q        :退出

 

三、iotop工具展示

image

第一行是总的I/O统计信息,描述总的I/O读写情况。

第二行是列名称,从左到右依次是:

TID  :线程编号

PRIO :未知

USER:用户信息

DISK READ  :磁盘读,以对用户友好的方式显示

DISK WRITE:磁盘写,以对用户友好的方式显示

SWAPIN     : swap空间使用百分比

IO>           :IO使用百分比,“>”代表以IO排序,可以使用左右光标键调整使用哪一列来排序

COMMAND  :进程发起程序名

 

四、iotop使用测试

(1)写数据模拟

image

往数据库插入大量数据测试,可以看到,此时lgwr进程与dbwn还有arch进程磁盘写非常的高。但是无法看到用户进程信息。

(2)读数据模拟

对无索引的大表(2千万行)进行查询。SELECT * FROM   lijiaman.t_iotop  a WHERE  a.t_name = ‘M’;

image

可以看到用户进程消耗的IO非常的高,LOCAL=NO是oracle的直连用户进程。

 

【完】

版权声明:本文为lijiaman原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lijiaman/p/10518000.html