磁盘级监控
linux上针对以磁盘为单位进行的I/O监控主要使用的工具是iostat命令,该命令的输出结果是以/proc/diskstats为基础计算而来的。
例如我们以2秒间隔来进行采样:
iostat -xd 2
如果出现以下提示:
-bash: iostat: 未找到命令
则需要安装iostat,以centos为例,使用命令yum install sysstat进行安装,安装完成后继续执行上述命令,得到如下的输出,每两秒刷新一次:
在此主要关注如下几个指标:
- iops:即每秒的读写次数,由r/s(每秒读次数)和w/s(每秒写次数 )组成,最直观的体现了每秒的磁盘I/O情况
- await:即平均I/O等待时间,包括硬盘处理时间和队列等待时间,能直观的反应磁盘的处理时间(某种程度上可以理解为延迟)
- %util:即设备的繁忙比,数值越高,设备越繁忙,能直观的反应设备的负载情况,当数值接近100%时设备接近满载,无法处理更多的请求(某些具备并行处理能力的场景除外)
进程级监控
linux上针对以进程为单位进行的I/O监控主要使用的工具是iotop命令,该命令可以动态的输出每个进程的读写速度,类似于top命令。
如果执行iotop命令提示:
-bash: iotop: 未找到命令
则需要安装iotop,以centos为例,使用命令yum install iotop进行安装,安装完成后继续执行上述命令,得到如下的输出:
统计结果中包含所有磁盘的总得读写速度,以及每个进程的实时读写速度,command输出则反映了该进程实际上进行I/O操作的命令,可以作为判断进程I/O情况的依据