iostat

显示CPU、I/O设备及NFS统计数据


语法格式

iostat [-cdhnNtVxz] [-k|-m] [-p [devices | ALL]] [devices | ALL]
       [interval [ count]]

命令简介

iostat命令主要用于考察I/O设备的活动,监控I/O设备的负载,包括读写次数与读写的数据量、I/O请求的服务时间与等待时间等。同时,iostat命令还可用于考察CPU的利用率,考察NFS网络文件系统的处理活动等。iostat命令生成的报告可用作调整系统配置,平衡物理磁盘I/O负载的依据。

其中,devices是一个或多个I/O设备的文件名。interval参数指定了数据采样的间隔时间(单位为秒),即生成每个统计报告的间隔时间,count是显示采样数据的次数。iostat命令生成的第一个报告是从系统启动迄今的平均统计数据。随后的每个报告是从前一个报告开始至指定时间间隔期间收集的统计数据。count参数可以与interval参数一起指定。如果指定了count参数,count参数的值确定了生成多少次统计报告。如果仅指定了interval参数但未指定count参数,iostat命令将按照指定的时间间隔连续地生成统计报告。

统计报告通常包括一个CPU标题行,以及CPU利用率的统计数据。在一个多CPU的系统中,CPU的统计数据是所有CPU处理活动的平均值。此外,统计报告也会包括一个设备标题行,以及每个I/O设备的统计数据。当指定了“-n”选项时,iostat仅显示NFS标题行及每个已安装的NFS文件系统的统计数据。

命令选项

-c  显示CPU使用情况的分类统计数据。

-d  显示设备使用情况的分类统计数据。

-h  按照易读的适当单位显示“-n”选项提供的NFS统计数据。

-k  以KB/s(而非默认的每秒数据块)为单位显示统计数据。

-m  以MB/s为单位显示统计数据。

-n  显示NFS统计数据。

-N  用于显示LVM2逻辑卷的统计数据。

-p [devices | ALL]  显示指定块设备及其所有分区的统计数据。如果在命令行中指定了设备名,显示指定设备及其所有分区的统计数据。关键字ALL表示显示所有块设备及其所有分区(包括未用分区)的统计数据。

-t  在显示的统计数据中增加时间信息(时间的显示格式依赖于S_TIME_FORMAT环境变量的设置)。

-V  显示命令的版本与版权信息,然后退出。

-x  显示附加的统计信息。

-z  禁止输出数据采样期间没有I/O活动的任何设备。

输出数据

iostat命令能够生成3类统计数据:CPU使用情况、I/O设备使用情况以及NFS网络文件系统。

%user  用户模式运行时间(应用)占用整个CPU时间的百分比。

%nice  用户模式运行时间(处理具有优先级调整值的进程)占用整个CPU时间的百分比。

%system  内核模式运行时间(系统)占用整个CPU时间的百分比。

%iowait  CPU因等待I/O完成而处于空闲状态期间占用整个CPU时间的百分比。

%steal  虚拟CPU因等待虚拟机管理器提供服务花费的时间占用整个CPU时间的百分比。

%idle  CPU完全空闲时(期间没有等待处理的I/O请求)占用整个CPU时间的百分比。

当需要考察一个具体的块设备,显示相关的统计数据时,可在命令行中指定块设备或分区的设备文件名。如果既未指定块设备文件名,也未指定分区设备文件名,则分别显示系统使用的每个存储设备的统计数据。如果指定了关键字ALL,则显示系统维护的每个设备(包括未用的设备)的统计数据。根据命令行选项,输出的报告通常会包含下列字段:

Device:  设备或分区的名字(标准设备文件名/dev/name省略/dev部分)

tps  设备每秒执行数据I/O的实际次数(多个逻辑I/O请求可以合并为一个实际I/O请求)。

Blk_read/s  每秒从设备读取的数据块数量。

Blk_wrtn/s  每秒写入设备的数据块数量。

Blk_read  从设备读取的数据块总量。

Blk_wrtn  写入设备的数据块总量。

kB_read/s  每秒从设备读取的数据量(KB)。

kB_wrtn/s  每秒写入设备的数据量(KB)。

kB_read  从设备读取的数据总和(KB)。

kB_wrtn  写入设备的数据总和(KB)。

MB_read/s  每秒从设备读取的数据量(MB)。

MB_wrtn/s  每秒写入设备的数据量(MB)。

MB_read  从设备读取的数据总和(MB)。

MB_wrtn  写入设备的数据总和(MB)。

rrqm/s  每秒合并请求读设备的次数。

wrqm/s  每秒合并请求写设备的次数。

r/s  设备每秒受理读请求的次数。

w/s  设备每秒受理写请求的次数。

rsec/s  每秒从设备读取的扇区数量。

wsec/s  每秒写入设备的扇区数量。

rkB/s  每秒从设备读取的数据量(KB)。

wkB/s  每秒写入设备的数据量(KB)。

rMB/s  每秒从设备读取的数据量(MB)。

wMB/s  每秒写入设备的数据量(MB)。

avgrq-sz  设备受理读写请求的平均扇区数量。

avgqu-sz  设备受理读写请求的平均队列长度。

await  设备处理I/O请求的平均等待时间(毫秒),包括队列等待时间与实际服务时间。

svctm  设备处理I/O请求的平均服务时间(毫秒)。

%util  设备处理I/O请求的时间占用整个CPU时间的百分比。如果这个数值接近100%,表示设备即将达到饱和状态。

Filesystem:  NFS服务器的主机名与共享目录资源名(形如host:/directory)。

rBlk_nor/s  应用通过read(2)系统调用读取的数据块数量。

wBlk_nor/s  应用通过write(2)系统调用写出的数据块数量。

rBlk_dir/s  从打开标志为O_DIRECT的文件中读取的数据块数量。

wBlk_dir/s  写到打开标志为O_DIRECT的文件中的数据块数量。

rBlk_svr/s  NFS客户机通过NFS READ请求从NFS服务器读取的数据块数量。

wBlk_svr/s  NFS客户机通过NFS WRITE请求写到NFS服务器的数据块数量。

rkB_nor/s  应用通过read(2)系统调用读取的数据量(KB)。

wkB_nor/s  应用通过write(2)系统调用写出的数据量(KB)。

rkB_dir/s  从打开标志为O_DIRECT的文件中读取的数据量(KB)。

wkB_dir/s  写到打开标志为O_DIRECT的文件中的数据量(KB)。

rkB_svr/s  NFS客户机通过NFS READ请求从NFS服务器读取的数据量(KB)。

wkB_svr/s  NFS客户机通过NFS WRITE请求写到NFS服务器的数据量(KB)。

rMB_nor/s  应用通过read(2)系统调用读取的数据量(MB)。

wMB_nor/s  应用通过write(2)系统调用读出的数据量(MB)。

rMB_dir/s  从打开标志为O_DIRECT的文件中读取的数据量(MB)。

wMB_dir/s  写到打开标志为O_DIRECT的文件中的数据量(MB)。

rMB_svr/s  NFS客户机通过NFS READ请求从NFS服务器读取的数据量(MB)。

wMB_svr/s  NFS客户机通过NFS WRITE请求写到NFS服务器的数据量(KB)。

ops/s  NFS服务器文件系统每秒受理的读写操作的数量。

rops/s  NFS服务器文件系统每秒受理的读操作的数量。

wops/s  NFS服务器文件系统每秒受理的写操作的数量。

应用实例

1. 显示从系统启动迄今CPU与存储设备的平均统计数据。

$ iostat
Linux 2.6.32-71.el6.i686 (iscas)        04/15/12        _i686_  (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.83    0.00    0.59    0.99    0.00   97.59

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               3.27       176.74         9.20     530368      27610
dm-0              4.92       172.35         9.19     517210      27592
dm-1              0.11         0.86         0.00       2576          0
$

2. 以2秒的时间间隔,连续显示第一个磁盘及各个分区的统计数据。

$ iostat -p sda 2 6

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z