![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7edd4e0727efdf560cc232ad5a258aa7.png)
一、iostat常用用法
iostat 主要有三个操作箱,options 操作项,interval指定统计时间间隔,count总共输出次数
options操作项常用字段:
-t:在输出数据时,打印搜集数据时的时间
-x:输出扩展信息
-k、-m:某些block为单位的列强制使用KB或者M
-p:用于显示块设备及系统分区的统计信息,简单用法如下:
iostat -x 1 -p /dev/sdb 查看磁盘所有分区io流量情况
iostat -p ALL 显示所有的分区情况
二、主要参数项说明:
avg-cpu:
1、%user:CPU在用户态执行进程的时间百分比。
2、%nice:CPU在用户态模式下,用于nice操作,所占用CPU总时间的百分比
3、%system:CPU处在内核态执行进程的时间百分比
4、%iowait:至少有一个I/O请求尚未完成,有进程因为等待它而休眠
5、%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无疑是等待时间百分比
6、%idle:CPU空闲时间百分比
- 若 %iowait 的值过高,表示硬盘存在I/O瓶颈 (不准确)详细介绍:http://linuxperf.com/?p=33
- 若 %idle 的值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量
- 若 %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中最需要解决的资源是 CPU
device:
1、rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同或相邻Block的数据,FS会将这个请求合并Merge)
2、wrqm/s:每秒对该设备的写请求被合并次数
注意:如果两个I/O操作发生在相邻的数据块时,它们可以被合并成一个,以提高效率,合并的操作通常是I/O scheduler(也叫elevator)负责的。当上述两个值越高,该磁盘的响应性能也越好。
3、r/s:每秒完成的读次数
4、w/s:每秒完成的写次数
5、rKB/s:每秒读取数据量(KB为单位)
6、wKB/s:每秒写数据量(KB为单位)
7、avgrq-sz:每个IO的平均扇区数,即所有请求的平均大小,以扇区(512字节)为单位,该值受/sys/block/sdc/queue/max_sectors_kb的影响
8、avgqu-sz:平均未完成的I/O请求数量
9、await:每一个IO请求处理的平均时间(单位是ms),可以理解为IO 响应时间。等于 队列时间+服务时间 (顺序写不到1ms,随机写一两个毫秒算是好的)
•r_wait:每个读操作平均所需要的时间,不仅包括硬盘设备读操作的时间,也包括在内核队列中的时间。
•w_wait: 每个写操平均所需要的时间,不仅包括硬盘设备写操作的时间,也包括在队列中等待的时间
注意:在Linux上,每个I/O的平均耗时是用await表示的,但它不能反映硬盘设备的性能,因为await不仅包括硬盘设备处理I/O的时间,还包括了在队列中等待的时间。I/O请求在队列中的时候尚未发送给硬盘设备,即队列中的等待时间不是硬盘设备消耗的,所以说await体现不了硬盘设备的速度,内核的问题比如I/O调度器什么的也有可能导致await变大。
10、svctm:(已经被放弃)
11、%util:表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有
注意:%util表示该设备有I/O(即非空闲)的时间比率,不考虑I/O有多少,只考虑有没有。由于现代硬盘设备都有并行处理多个I/O请求的能力,所以%util即使达到100%也不意味着设备饱和了。举个简化的例子:某硬盘处理单个I/O需要0.1秒,有能力同时处理10个I/O请求,那么当10个I/O请求依次顺序提交的时候,需要1秒才能全部完成,在1秒的采样周期里%util达到100%;而如果10个I/O请求一次性提交的话,0.1秒就全部完成,在1秒的采样周期里%util只有10%。可见,即使%util高达100%,硬盘也仍然有可能还有余力处理更多的I/O请求,即没有达到饱和状态