52节 2021-03-13服务器性能分析基础命令iostat

iostat简介

Linux系统中的iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析.

iostat语法

iostat语法
用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]]
即:iostat [参数] [时间] [次数]

常用选项说明:

-c:只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果
-d:单独输出磁盘使用情况,不包括cpu结果
-k:以K为单位显示
-m:以M为单位显示
-x:输出更详细的io设备统计信息
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS使用情况
-p 可以报告出每块磁盘的每个分区的使用情况
-t 显示终端和CPU的信息
interval/count:每次输出间隔时间,count表示输出次数,不带count表示循环输出

下面就对我们常用的使用方式进行详细的总结。


52节 2021-03-13服务器性能分析基础命令iostat_第1张图片
image.png

iostat常见用法以及输出含义解释

1、iostat,结果为从系统开机到当前执行时刻的统计信息

[root@vircent7 ~]# iostat
Linux 3.10.0-1127.el7.x86_64 (vircent7.kyj)     2021年03月16日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.66    0.00    1.36    0.14    0.00   97.83

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.24        59.35         4.49     333500      25219
dm-0              1.02        53.67         4.12     301570      23171
dm-1              0.02         0.39         0.00       2208          0

[root@vircent7 ~]#


输出项含义解释:
第一行:
avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。
%user:CPU处在用户模式下的时间百分比
%nice:CPU处在带NICE值的用户模式下的时间百分比
%system:CPU处在系统模式下的时间百分比
%iowait:CPU等待输入输出完成时间的百分比
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
%idle:CPU空闲时间百分比

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

Device: 以sdX形式显示的设备名称

tps: 该设备每秒的传输次数(即每秒进程下发的IO读、写请求数量-->磁盘连续读和连续写之和])。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。

KB_read/s: 每秒从设备读取的数据量,单位为KB(Kilobytes)。
KB_wrtn/s: 每秒向设备写入的数据量,单位为KB。

KB_read: 读入数据总量,单位为KB。
KB_wrtn: 写入数据总量,单位为KB。

2.iostat -x

[root@vircent7 ~]# iostat  -x
Linux 3.10.0-1127.el7.x86_64 (vircent7.kyj)     2021年03月16日     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.40    0.00    0.82    0.09    0.00   98.70

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.02    0.64    0.14    39.43     2.66   107.28     0.01    7.82    9.21    1.53   3.38   0.27
dm-0              0.00     0.00    0.53    0.16    36.64     2.48   114.50     0.01    8.63   10.76    1.54   3.80   0.26
dm-1              0.00     0.00    0.01    0.00     0.19     0.00    49.62     0.00    2.12    2.12    0.00   1.61   0.00

[root@vircent7 ~]# ^C


iostat命令的重点不是用来看CPU的,重点是用来监测磁盘性能的。

上面输出第二行,磁盘信息详解:
Device:设备名称
rrqm/s:每秒合并到设备的读取请求数,单位是次数,delta(rmerge)/s
wrqm/s:每秒合并到设备的写请求数
r/s:每秒向磁盘发起的读操作次数
w/s:每秒向磁盘发起的写操作次数
rsec/s: 每秒读扇区数.即 delta(rsect)/s
wsec/s: 每秒写扇区数.即 delta(wsect)/s
rkB/s:每秒读K字节数,是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)
wkB/s:每秒写K字节数,是 wsect/s 的一半.(需要计算)
avgrq-sz:平均每次设备I/O操作的数据大小
avgqu-sz:平均I/O队列长度
await:平均每次设备I/O操作的等待时间 (毫秒),一般地,系统I/O响应时间应该低于5ms,如果大于 10ms就比较大了
r_await:每个读操作平均所需的时间;不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间
w_await:每个写操作平均所需的时间;不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间
svctm:平均每次设备I/O操作的服务时间 (毫秒)(这个数据不可信!)
%util:一秒中有百分之多少的时间用于I/O操作,即被IO消耗的CPU百分比,一般地,如果该参数是100%表示设备已经接近满负荷运行了

参考这边文章:http://www.ha97.com/4546.html

你可能感兴趣的