Linux系统中的iostat
是I/O statistics(输入/输出统计)的缩写,iostat
工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat
一样,iostat
也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
安装
yum install sysstat
iostat命令格式
iostat [参数] [时间] [次数]命令参数:-c 显示CPU使用情况-d 显示磁盘使用情况-k 以K为单位显示-m 以M为单位显示-N 显示磁盘阵列(LVM) 信息-n 显示NFS使用情况-p 可以报告出每块磁盘的每个分区的使用情况-t 显示终端和CPU的信息-x 显示详细信息
实例
[fenglepeng@centos]#iostat -x
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/20/2022 _x86_64_ (4 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.54 0.01 0.38 0.00 0.00 99.08Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
fd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 22.25 22.25 0.00 22.25 0.00
sdb 0.00 0.00 0.00 0.02 0.00 0.11 12.58 0.00 1.71 1.69 1.71 1.24 0.00
sda 0.00 0.05 0.00 0.26 0.62 3.83 33.26 0.00 7.26 7.39 7.25 0.52 0.01
dm-0 0.00 0.00 0.00 0.31 0.60 3.82 28.24 0.00 11.18 7.49 11.22 0.45 0.01
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 50.09 0.00 0.07 0.07 0.00 0.07 0.00
输出内容详解:
avg-cpu:cpu 状态
%user
:CPU处在用户模式下的时间百分比。%nice
:CPU处在带NICE值的用户模式下的时间百分比。%system
:CPU处在系统模式下的时间百分比。%iowait
:CPU等待输入输出完成时间的百分比。%steal
:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。%idle
:CPU空闲时间百分比。
Device
:设备名称。当然了,iostat
命令的重点不是用来看CPU的,重点是用来监测磁盘性能的。
rrqm/s
:每秒合并到设备的读取请求数。wrqm/s
:每秒合并到设备的写请求数。r/s
:每秒向磁盘发起的读操作数。w/s
:每秒向磁盘发起的写操作数。rkB/s
:每秒读K字节数。wkB/s
:每秒写K字节数。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%表示设备已经接近满负荷运行了。
[fenglepeng@centos]# iostat
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7) 12/20/2022 _x86_64_ (4 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.54 0.01 0.38 0.00 0.00 99.08Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
fd0 0.00 0.00 0.00 21280 0
sdb 0.02 0.00 0.11 2790 1811861
sda 0.27 0.62 3.83 10461853 64221227
dm-0 0.31 0.60 3.82 9995019 64162414
dm-1 0.00 0.00 0.00 2204 0
输出内容详解:
tps
:每秒I/O数(即IOPS。磁盘连续读和连续写之和)。kB_read/s
:每秒从磁盘读取数据大小,单位KB/s。kB_wrtn/s
:每秒写入磁盘的数据的大小,单位KB/s。kB_read
:从磁盘读出的数据总数,单位KB。kB_wrtn
:写入磁盘的的数据总数,单位KB。
性能监控指标
我们到底该关注哪些输出内容就可以确定这台服务器是否存在IO性能瓶颈。
%iowait
:如果该值较高,表示磁盘存在I/O瓶颈。await
:一般地,系统I/O响应时间应该低于5ms,如果大于10ms就比较大了。avgqu-sz
:如果I/O请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O等待队列长度。%util
:一般地,如果该参数是100%表示设备已经接近满负荷运行了。
最后,除了关注指标外,我们更需要结合部署的业务进行分析。对于磁盘随机读写频繁的业务,比如图片存取、数据库、邮件服务器等,此类业务吗,tps
才是关键点。对于顺序读写频繁的业务,需要传输大块数据的,如视频点播、文件同步,关注的是磁盘的吞吐量。