Linux 状态命令之磁盘状态 iostat
简介
Linux 系统中的 iostat
是 I/O statistics(输入/输出统计)的缩写,iostat
工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况。
同 vmstat
一样,iostat
也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
安装
1 |
|
语法
1 |
|
示例
1 |
|
其中:
avg-cpu
%user
:CPU 处在用户模式下的时间百分比。%nice
:CPU 处在带 NICE 值的用户模式下的时间百分比。%system
:CPU 处在系统模式下的时间百分比。%iowait
:CPU 等待输入输出完成时间的百分比。%steal
:管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比。%idle
:CPU 空闲时间百分比。
Device
:设备名称。当然了,iostat
命令的重点不是用来看 CPU 的,重点是用来监测磁盘性能的。tps
:每秒 I/O 数(即 IOPS。磁盘连续读和连续写之和)。kB_read/s
:每秒从磁盘读取数据大小,单位 KB/s。kB_wrtn/s
:每秒写入磁盘的数据的大小,单位 KB/s。kB_read
:从磁盘读出的数据总数,单位 KB。kB_wrtn
:写入磁盘的的数据总数,单位 KB。
1 |
|
其中:
rrqm/s
:每秒合并到设备的读取请求数。wrqm/s
:每秒合并到设备的写请求数。r/s
:每秒向磁盘发起的读操作数。w/s
:每秒向磁盘发起的写操作数。rkB/s
:每秒读 K 字节数。wkB/s
:每秒写 K 字节数。avgrq-sz
:平均每次设备 I/O 操作的数据大小。avgqu-sz
:平均 I/O 队列长度。await
:平均每次设备 I/O 操作的等待时间 (毫秒),一般地,系统 I/O 响应时间应该低于 5ms,如果大于 10ms 就比较大了。r_await
:每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在 kernel 队列中等待的时间。w_await
:每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在 kernel 队列中等待的时间。svctm
:平均每次设备 I/O 操作的服务时间 (毫秒)(这个数据不可信!)。%util
:一秒中有百分之多少的时间用于 I/O 操作,即被 IO 消耗的 CPU 百分比,一般地,如果该参数是 100% 表示设备已经接近满负荷运行了。
性能监控指标
我们到底该关注哪些输出内容就可以确定这台服务器是否存在 IO 性能瓶颈。
%iowait
:如果该值较高,表示磁盘存在 I/O 瓶颈。await
:一般地,系统 I/O 响应时间应该低于 5ms,如果大于 10ms 就比较大了。avgqu-sz
:如果 I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过 2,一般认为该磁盘存在 I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度。%util
:一般地,如果该参数是 100% 表示设备已经接近满负荷运行了。
最后,除了关注指标外,我们更需要结合部署的业务进行分析。对于磁盘随机读写频繁的业务,比如图片存取、数据库、邮件服务器等,此类业务吗,TPS 才是关键点。对于顺序读写频繁的业务,需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。
Linux 状态命令之磁盘状态 iostat
https://flepeng.github.io/002-Linux-21-命令-Linux-状态命令之磁盘状态-iostat/