常用命令-iostat

Posted Parker@1989

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用命令-iostat相关的知识,希望对你有一定的参考价值。

1. 简介

iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息,用户可以通过指定统计的次数和时间来获得所需的统计信息。

2. 入门使用

iostat -d -k 2

-d 表示,显示设备(磁盘)使用状态;

-k 某些使用block为单位的列强制使用Kilobytes为单位;

2表示,数据显示每隔2秒刷新一次。

输出如下:

CentOS6-Test-Master [~] 10/31/18 16:58:24
root@0 # iostat -d -k 2
Linux 4.4.155-1.el6.elrepo.x86_64 (CentOS6-Test-Master)         10/31/2018      _x86_64_    (2 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.26         0.41         1.37     284957     951186

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

输出信息含义:

tps: 该设备每秒I/O请求,多个逻辑请求可能会被合并为"一次I/O请求";

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同。

iostat -d sda 2

默认监控所有的硬盘设备,现在指定只监控sda。

3. 常用参数

-x 参数

iostat还有一个比较常用的选项**-x**,该选项将用于显示和io相关的扩展数据。

CentOS6-Test-Master [~] 10/31/18 16:58:35
root@0 # iostat -d -k -x 2
Linux 4.4.155-1.el6.elrepo.x86_64 (CentOS6-Test-Master)         10/31/2018      _x86_64_    (2 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.08    0.03    0.23     0.41     1.37    13.54     0.00    1.90    5.43    1.46   0.82   0.02

4. 其他常见参数

参数说明
-c仅显示CPU统计信息.与-d选项互斥.
-d仅显示磁盘统计信息.与-c选项互斥.
-k以K为单位显示每秒的磁盘请求数,默认单位块.
-m以mb为单位显示
-p与-x选项互斥,用于显示块设备及系统分区的统计信息.也可以在-p后指定一个设备名,如: # iostat -p hda或显示所有设备# iostat -p ALL
-t在输出数据时,打印搜集数据的时间.
-x输出扩展信息

5. 输出说明

输出项说明
Blk_read读入块的当总数.
Blk_wrtn写入块的总数.
kB_read/s每秒从驱动器读入的数据量,单位为K.
kB_wrtn/s每秒向驱动器写入的数据量,单位为K.
kB_read读入的数据总量,单位为K.
kB_wrtn写入的数据总量,单位为K.
rrqm/s将读入请求合并后,每秒发送到设备的读入请求数.
wrqm/s将写入请求合并后,每秒发送到设备的写入请求数.
r/s每秒发送到设备的读入请求数.
w/s每秒发送到设备的写入请求数.
rsec/s每秒从设备读入的扇区数.
wsec/s每秒向设备写入的扇区数.
rkB/s每秒从设备读入的数据量,单位为K.
wkB/s每秒向设备写入的数据量,单位为K.
avgrq-sz发送到设备的请求的平均大小,单位是扇区.
avgqu-sz发送到设备的请求的平均队列长度.
awaitI/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
svctm发送到设备的I/O请求的平均执行时间.单位是毫秒.
%util在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.当这个值接近100%时,表示设备带宽已经占满.

await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)

以上是关于常用命令-iostat的主要内容,如果未能解决你的问题,请参考以下文章

常用命令-iostat

常用命令-iostat

常用命令-iostat

linux-常用命令-iostat&vmstat

iostat命令

深入浅出 iostat 命令