常用命令-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 | 发送到设备的请求的平均队列长度. |
await | I/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的主要内容,如果未能解决你的问题,请参考以下文章