zl程序教程

您现在的位置是:首页 >  其他

当前栏目

iostat 输出CPU、磁盘IO的使用情况统计信息

统计输出CPUIO 信息 情况 磁盘 iostat
2023-09-11 14:21:21 时间

iostat 命令是I/O statistics(输入/输出统计)的缩写,iostat工具可以对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU使用情况,这在生产环境中非常实用,比如需要查看线上Linux服务器的磁盘读写情况,就可以使用iostat命令查看,iostat属于sysstat软件包,可以用yum install sysstat 直接安装。

iostat可以产生三种类型的报告:cpu利用情况报告、磁盘设备利用情况报告、网络文件系统利用情况报告。

iosta命令语法格式如下:

iostat [选项] [<时间间隔>] [<次数>]

备注:时间间隔以秒为单位

常用选项如下:

-c	表示显示cpu使用情况,默认不写也会显示cpu使用情况
-d	表示显示磁盘使用情况,默认不写也会显示disk使用情况
-h  友好显示
-x	表示显示额外的统计信息
-k	表示以kb为单位显示磁盘请求数
-m	表示以M为单位显示磁盘请求数
-V	显示版本信
-p  [磁盘] 显示磁盘和分区的情况

iostat默认就会输出cpu和磁盘设备的信息,如下图所示:

[root@Oracle11g ~]# iostat
Linux 3.10.0-1160.31.1.el7.x86_64 (Oracle11g)   12/26/2021      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.20    0.09    0.00   99.46

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.48        48.86        30.89    1147849     725817
dm-0              2.31        47.47        30.81    1115153     723769
dm-1              0.00         0.09         0.00       2204          0

第一行输出的系统的内核、架构、主机名、统计时间、cpu核数等信息;

avg-cpu段: 这一行输出的是总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值,avg-cpu段输出的信息含义如下;
		%user:		在用户级别运行所使用cpu的百分比。
		%nice:		nice操作所使用cpu的百分比。
		%system:	在系统级别(kernel)运行所使用cpu的百分比。
		%iowait:	cpu等待I/O完成时间的百分比,iowait数字越大说明I/O等待越严重。
		%steal:		管理程序维护另一个虚拟处理器时,虚拟cpu的无意识等待时间百分比。
		%idle:		cpu空闲时间的百分比,idle百分比越大说明cpu越空闲,反之idle百分比越小说明cpu越繁忙。
		
Device段: 各磁盘设备的IO统计信息;
		tps:设备每秒的 I/O 请求数,多个逻辑请求可能会被合并为“一次I/O请求”。
		Blk_read/s:每秒读取的 block 数
Blk_wrtn/s:每秒写入的 block 数
Blk_read:读入的 block 总数
Blk_wrtn:写入的 block 总数
wrqm/s  将写入请求合并后,每秒发送到设备的写入请求数

备注:从以上的结果我们得知,如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

更多演示示例:

[root@Oracle11g ~]# iostat 							#显示所有CPU和设备启动后的单个历史记录报告
[root@Oracle11g ~]# iostat -d 2						#以2秒为间隔持续输出所有磁盘设备的报告信息
[root@Oracle11g ~]# iostat -c 2						#以2秒为间隔持续输出所有cpu的报告信息
[root@Oracle11g ~]# iostat  2 3						#以2秒为间隔持续输出所有cpu和磁盘设备的报告信息,共输入3次报告信息
[root@Oracle11g ~]# iostat -d sda 2					#以2秒为间隔持续输出sda磁盘设备的报告信息
[root@Oracle11g ~]# iostat -d 2 6					#以2秒的间隔为所有磁盘设备显示6个报告。
[root@Oracle11g ~]# iostat -x sda sdb 2 6         	#以2秒为间隔显示设备 sda 和 sdb 的六个扩展统计报告。
[root@Oracle11g ~]# iostat -p sda 2 6             	#以2秒为间隔显示设备 sda 及其所有分区(sda1 等)的6个报告