磁盘监控工具iostat与iotop使用教程

磁盘监控工具iostat与iotop使用教程

一、引言

在日常运维与性能排查工作中,磁盘 I/O 是许多性能问题的根源。在 Linux 系统中,可以通过iostat和iotop两款工具来深入了解磁盘 I/O 的运行状况,iostat 偏向于展现磁盘的整体性能,iotop 则是用于查询具体是什么进程导致磁盘 I/O 负载过高。二者结合使用,可以在数分钟内定位大部分 I/O 异常问题。

二、iostat

iostat 同vmstat工具类似,用于对服务器上磁盘的整体 I/O 性能进行分析,通过该工具可以统计每块磁盘的使用率、IOPS、吞吐量等核心性能指标,这些指标数据通常来自 /proc/diskstats

1、iostat 常用选项

-x:显示扩展统计信息

-d:显示磁盘统计信息,也是默认选项

-c:显示CPU的统计信息

-p:显示每个分区的统计情况

-m:以m为单位进行统计

N...N:和vmstat一样,iostat也可以使用2个数字指定刷新状态信息的间隔以及总共统计的次数

#第一次执行iostat命令时统计的将是开机的那一刻到执行命令那一刻的数据,再次使用iostat命令则是统计当前点到上一次执行iostat命令时产生的数据。
iostat -d -x -m 3  #每3秒统计一次磁盘信息
iostat -d -x -m sdb 2   #每2秒统计一次sdb的信息

iostat1.png

2、iostat 指标解读

iostat2.png

1、第一部分

展示系统内核、主机名、当前时间、架构、CPU个数等信息


2、第二部分

CPU平均负载情况,包括:

· %user:用户进程所占用CPU时间片的百分比。

· %nice:某些被修改过优先值的进程所占用CPU时间片的百分比。

· %system:系统或者内核进程所占用CPU时间片的百分比。

· %iowait:CPU等待磁盘IO完成所占用的CPU时间百分比,即CPU等待硬盘响应指令的时间。因为CPU速度比硬盘快N倍,每次发出IO指令后要等硬盘工作结束。此值越高,表示硬盘压力越大。

· %steal:如果有虚拟机服务,那么虚拟机占用的CPU资源百分比。

· %idel:CPU空闲时间百分比。该值越高越好,如果长期低于10-20%,那么需要考虑升级CPU。


3、第三部分

磁盘相关信息,包括:

· tps:磁盘每秒传输的次数,一次传输代表一次IO请求。多个逻辑请求可以合并为一次IO请求。

· rMB/s:每秒从设备上读取的数据量,wMB/s 除以 w/s = 每个写IO的大小

· wMB/s:每秒向设备写入的数据量


通过rMB/s + wMB/s 可以计算出IO吞吐量;通过r/s + w/s可以计算出IOPS


三、iotop

iotop 是一款类似于 top 的实时进程级 I/O 监控工具,它可以显示当前系统中每个进程的磁盘读写速率、I/O 等待时间等信息,可以实现快速对磁盘 I/O 异常进行定位,找出具体是什么进程导致磁盘大量读写

1、iotop 常用选项

-o:只显示有实际 I/O 活动的进程,常用参数

-d:设置刷新间隔,默认1秒

-n:指定刷新次数

-P:显示线程级别信息

-k:将数据单位转为 KB/s 或 MB/s,默认是字节

-p:只监控指定 PID 进程

-u:只显示指定用户的进程

#每 2 秒刷新一次,共统计 10 次,结果写入日志文件
iotop -d 2 -n 10 > iotop.log

2、iotop 指标解读

iotop1.png


PRIO:进程优先级

USER:进程所属用户

DISK READ: 实时磁盘读取速率

DISK WRITE: 实时磁盘写入速率

IO%: 进程等待 I/O 的 CPU 时间比例

COMMAND:具体进程


通常通过 DISK READ / DISK WRITE 可以快速判断是哪个进程正在进行大量磁盘操作。若 IO% 较高,则说明进程大量时间都在等待 I/O 完成,需要重点关注。

文章评论