iostat——I/O statistics(输入输出统计)
1. 作用
实时列出整个CPU与接口设备的I/O状态。
2. 安装
iostat属于sysstat软件包,可以用yum直接安装:
yum install sysstat
3. 用法
iostat 【参数】【间隔秒数】【检测次数】
参数:[-c | -d] [-k | -m] [-t] [-x]
-c:仅显示CPU的状态;
-d:仅显示存储设备的状态,不可与-c一起用;
-k:默认显示的是block单位,这里可以改成KB为单位;
-m:与-k类似,这里以MB为单位;
-t:显示日期;
-x:显示详细信息。
4. 范例
4.1 iostat
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
备注: 对于cpu统计信息一行,我们主要看iowait的值,它指示cpu用于等待io请求完成的时间。
如果%iowait的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲;
如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。
%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
Device: 各磁盘设备的IO统计信息
tps:平均每秒的传输次数(Indicate the number of transfers per second that were issued to the device),与数据传输“次数”有关,非容量。 “一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
Blk_read/s:开机到现在平均每秒的读扇区数量(一扇区为512bytes);
Blk_wrtn/s:开机到现在平均每秒的写扇区数量;
Blk_read:开机到现在总共读出来的扇区数量;
Blk_wrtn:开机到现在总共写入的扇区数量。
4.2 iostat -c
仅显示CPU的状态:
4.3 iostat -d
仅显示存储设备的状态:
4.4 iostat -k
以KB大小来显示,相比以扇区数为单位,这里的值为原值的一半(1KB=512bytes*2):
4.5 iostat -m
以MB大小来显示:
4.6 iostat -t
显示时间:
4.7 iostat 2 3
每2秒检测一次,共检测3次:
备注:如果有检测次数的情况,那么第一次显示的是从开机到现在的数据,第二次以后所显示的数据则代表两次检测之间的系统传输值。
4.8 iostat -x
显示更详细的信息:
属性说明:
rrqm/s:每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并;
wrqm/s:每秒对该设备的写请求被合并次数;
r/s:每秒完成的读次数;
w/s:每秒完成的写次数;
rsec/s:每秒读取的扇区数;
wsec/s:每秒写入的扇区数;
avgrq-sz:平均请求扇区的数量;
avgqu-sz:平均请求队列的长度,队列长度越短越好;
await:平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)。这里可以理解为IO的响应时间,一般地系统IO响应时间应低于5ms,如果大于10ms就比较大了。一般情况下,await大于svctm,它们的差值越小,说明等待时间越短,几乎没有I/O等待,磁盘性能很好;反之差值越大,等待时间越长,系统上运行的应用程序变慢;
svctm:平均每次IO请求的处理时间(毫秒为单位);
%util:采样周期内用于IO操作的时间比率,即IO队列非空的时间比。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。