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
输出含义:
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
以上各列的含义如下:
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是什么意思?
原来dm是device mapper的意思,dm-0, dm-1的实体可以通过下面几个命令看出,lvm会把每个lv连接到一个/dev/dm-x的设备档,这个设备档并不是一个真正的磁盘,所以不会有分区表存在,不能把dm设备分区。
所以我们执行fdisk -l 时看不见dm的字样。
执行dmsetup info 可以来查看dm设备(lvm)映射情况,可以看到主设备号,次设备号,看不到物理硬盘信息