昔我往矣

磁盘IO分析工具iostat和iotop

2015年02月4日

磁盘IO是服务器性能的一个重要指标,下面介绍两个常用的观察IO的命令,iostat我一般用来查看磁盘的IO,以及在测试磁盘时做一个监控工具,iotop在排查服务器问题时,可以用来找到某些异常程序!下面都会做一个简要的介绍!

iostat

iostat是一个统计设备IO和和CPU的工具。最常用的是-x和-d选项

iostat -d 2 

每两秒钟显示一次报告,-d选项的打印效果如下,会显示每秒钟的发出大IO请求数,实时读写block数和累计读写block数!

iostat -x 2 6 /dev/sda1

iostat-example
每两秒钟显示一次sda1的统计报告,共显示6次,-x打印出扩展的统计数据。输出数据项的说明如下:

tps 每秒钟发送的I/O请求数.
Blk_read 读入块的总数.
Blk_wrtn 写入块的总数.

kB_read/s 每秒从驱动器读入的数据量,单位为K.
kB_wrtn/s 每秒向驱动器写入的数据量,单位为K.
kB_read 读入的数据总量,单位为K.
kB_wrtn 写入的数据总量,单位为K.
rrqm/s 将读入请求合并后,每秒发送到设备的读入请求数.
wrqm/s 将写入请求合并后,每秒发送到设备的写入请求数.
r/s 每秒发送到设备的读入请求数.
w/s 每秒发送到设备的写入请求数.
rsec/s 每秒从设备读入的扇区数.
wsec/s 每秒向设备写入的扇区数.
avgrq-sz 发送到设备的请求的平均大小,单位是扇区.
avgqu-sz 发送到设备的请求的平均队列长度.
await I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
svctm 发送到设备的I/O请求的平均执行时间.单位是毫秒.
%util 在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率. 当这个值接近100%时,表示设备带宽已经占满.

iotop

在某些场景下,我们需要找到占用IO特别大的进程,然后关闭它,需要知道PID或者进程名称,这就需要用到iotop。iotop是一个检测Linux系统进程IO的工具,界面类似top,如下图。
iotop-example
iotop和top一样,也可以通过键入相应键,触发排序选项,例如按o可以在IO活动进程和所有进程之间切换。可以通过左右箭头,选择响应的列进行数据排序。
iotop的常用参数如下:

--version 查看程序版本号

-h, --help 查看帮助信息
-o, --only 只查看有IO操作的进程
-b, --batch 非交互模式
-n, --iter= 设置迭代次数
-d, --delay 刷新频率,默认是1秒
-p, --pid 查看指定的进程号的IO,默认是所有进程
-u, --user 查看指定用户进程的IO,默认是所有用户
-P, --processes 只看进程,不看线程
-a, --accumulated 看累计IO,而不是实时IO
-k, --kilobytes 以KB为单位查看IO,而不是以最友好的单位显示
-t, --time 每行添加一个时间戳,默认便开启--batch
-q, --quit 不显示头部信息

相关的命令还有很多,例如sar,vmstat等等,有空学习了将会继续介绍!

当前暂无评论 »

添加新评论 »