1.概述

iostat命令用于监控系统设备的输入/输出情况,并生成报告,以便根据统计报告修改系统配置,获取更优的性能。在系统故障时也可以用iostat辅助排查,通过各参数的不合理往下排查。

2.iostat参数格式及说明

命令格式:
iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

iostat可以产生三种类型的报告:CPU利用情况报告、设备利用情况报告、网络文件系统利用情况报告。
iostat命令格式可概述为:
iostat[参数][时间][次数]
其中,时间以秒为单位。

c 仅显示 CPU 统计信息。与 -d 选项互斥。
-d 仅显示磁盘统计信息。与 -c 选项互斥。
-k 以 KB为单位显示每秒的磁盘请求数,默认单位块。
-m 以MB为单位显示每秒的磁盘请求数。
-N 显示磁盘阵列信息
-n 显示网络文件系统NFS报告。此选项仅适用于Linux内核2.6.17以上版本。
-p device | ALL
与 -x 选项互斥,用于显示块设备及系统分区的统计信息,也可以在 -p 后指定一个设备名,如:
# iostat -p hda
或显示所有设备:
# iostat -p ALL
-t 在输出数据时,打印收集数据的时间。
-V 打印版本号和帮助信息。
-x 输出扩展信息。

3.命令使用及字段意义

# iostat 

iostat iostat -c_等待时间

 

 

 

输出含义:

    avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。

 avg-cpu段:
 %user:在用户级别运行所使用 CPU 的百分比。
   %nice:nice操作所使用 CPU 的百分比。
   %system:在系统级别(kernel)运行所使用 CPU 的百分比。
   %iowait:CPU等待硬件 I/O 时,所占用 CPU 百分比。
   %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
   %idle:CPU 空闲时间的百分比。

    Device: 各磁盘设备的IO统计信息。各列含义如下:

Device: 以sdX形式显示的设备名称
tps: 每秒进程下发的IO读、写请求数量
KB_read/s: 每秒从驱动器读入的数据量,单位为K。
KB_wrtn/s: 每秒从驱动器写入的数据量,单位为K。
KB_read: 读入数据总量,单位为K。
KB_wrtn: 写入数据总量,单位为K。

# iostat -mx 2 3

iostat iostat -c_ios_02

 

 

 

以上各列的含义如下:

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rMB/s: 每秒读数据量(MB为单位)
wMB/s: 每秒写数据量(MB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度(肯定约低越好)
await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm: 平均每次IO请求的处理时间(毫秒为单位)
%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率(越低越好,越高性能约差)

 重点关注参数

1、iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。

2、avgqu-sz 表示磁盘IO队列长度,即IO等待个数。

3、await 表示每次IO请求等待时间,包括等待时间和处理时间

4、svctm 表示每次IO请求处理的时间

5、%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。

学习该命令的疑问?

我们知道sda是硬盘,那dm-0、dm-1是什么意思?

iostat iostat -c_ios_03

 

 

 原来dm是device mapper的意思,dm-0, dm-1的实体可以通过下面几个命令看出,lvm会把每个lv连接到一个/dev/dm-x的设备档,这个设备档并不是一个真正的磁盘,所以不会有分区表存在,不能把dm设备分区。

所以我们执行fdisk -l 时看不见dm的字样。

iostat iostat -c_等待时间_04

 

 

 执行dmsetup info 可以来查看dm设备(lvm)映射情况,可以看到主设备号,次设备号,看不到物理硬盘信息

iostat iostat -c_互斥_05