想知道linux哪此进程造成磁盘IO高吗?iotop命令告诉你

发布时间:2018-01-11 10:19:36编辑:丝画阁阅读(774)

linux磁磁盘IO

linux服务器如果磁盘性能不佳,或者进程操作IO量超过磁盘负荷,都会导致磁盘IO响应缓慢,甚至出现宕机的情况。

想知道linux哪此进程造成磁盘IO高吗?iotop命令告诉你

服务器硬盘

很多人会说,我有iostat命令啊。前面我的文章也对此命令做过详解,但是如果需要找到哪个进程对磁盘IO操作压力最大,iostat是不能帮我们直接呈现的,这时候,另一个利器iotop就派上用场了。

iotop命令

想知道linux哪此进程造成磁盘IO高吗?iotop命令告诉你

iotop

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。如果你想知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

iotop安装

一般iotop默认是没有安装的,iotop安装也很简单,你需要如下操作(其它linux版本可自行搜索安装方法):

CentOS/Redhat:yum install iotop

Debian/Ubuntu:apt-get install iotop

编译安装:

wget http://guichaz.free.fr/iotop/files/iotop-0.6.tar.gz

tar zxf iotop-0.4.4.tar.gz

python setup.py build

python setup.py install

iotop输出

想知道linux哪此进程造成磁盘IO高吗?iotop命令告诉你

iotop输出

iotop输出很容易看懂:

第一行:Read和Write速率总计

第二:实际的Read和Write速率

第三行:参数如下:

  • 线程ID(按p切换为进程ID)

  • 优先级

  • 用户

  • 磁盘读速率

  • 磁盘写速率

  • swap交换百分比

  • IO等待所占的百分比

  • 线程/进程命令

常用参数

  • -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指定监测某个用户产生的I/O。

  • -P, --processes仅显示进程,默认iotop显示所有线程。

  • -a, --accumulated显示累积的I/O,而不是带宽。

  • -k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。

  • -t, --time 加上时间戳,非交互非模式。

  • -q, --quiet 禁止头几行,非交互模式。有三种指定方式。

-q 只在第一次监测时显示列名

-qq 永远不显示列名。

-qqq 永远不显示I/O汇总。

交互按键

和top命令类似,iotop也支持以下几个交互按键。

  • left和right方向键:改变排序。

  • r:反向排序。

  • o:切换至选项--only。

  • p:切换至--processes选项。

  • a:切换至--accumulated选项。

  • q:退出。

  • i:改变线程的优先级。

写在最后

itop通过方向键选择按哪一列来排序,基本上我们会以此来判断当前哪些线程/进程对磁盘有IO操作,以及操作的IO速率,但是要判断磁盘IO负载是否已饱和,还需要结合top命令,当前磁盘最大性能等指标综合判断。


关键字