这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战
命令简介
iostat
是 I/O statistics(输入/输出统计)的缩写。iostat
命令主要用于对系统的磁盘操作活动进行监视。,包括 读写次数与读写的数据量、I/O 请求的服务时间与等待时间 等。同时,iostat
命令还可用于 考察 CPU 的利用率,考察 NFS 网络文件系统的处理活动 等。
iostat
命令生成的第一个报告是从系统启动迄今的平均统计数据。随后的每个报告是从前一个报告开始至指定时间间隔期间收集的统计数据。统计报告通常包括一个 CPU 标题行,以及 CPU 利用率的统计数据。在一个多 CPU 的系统中,CPU 的统计数据是所有 CPU 处理活动的平均值。此外,统计报告也会包括一个设备标题行,以及每个 I/O 设备的统计数据。当指定了 -n
选项时,iostat
仅显示 NFS 标题行及每个已安装的 NFS 文件系统的统计数据。
iostat
也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
命令格式
iostat[参数][时间][次数]
复制代码
命令参数
参数 | 解释 |
---|---|
-c |
显示 CPU 使用情况的分类统计数据。 |
-d |
显示设备使用情况的分类统计数据。 |
-h |
按照易读的适当单位显示 -n 选项提供的 NFS 统计数据。 |
-k |
以 KB/s(而非默认的每秒数据块)为单位显示统计数据。 |
-m |
以 MB/s 为单位显示统计数据。 |
-n |
显示 NFS 统计数据。 |
-N |
用于显示 LVM2 逻辑卷的统计数据。 |
`-p[devices | ALL]` |
-t |
在显示的统计数据中增加时间信息(时间的显示格式依赖于 S_TIME_FORMAT 环境变量的设置)。 |
-V |
显示命令的版本与版权信息,然后退出。 |
-x |
显示附加的统计信息。 |
-z |
禁止输出数据采样期间没有 I/O 活动的任何设备。 |
输出数据
iostat
命令能够生成 3 类统计数据:CPU 使用情况、I/O 设备使用情况以及 NFS 网络文件系统。
CPU使用情况(在多 CPU 的系统中,统计数据是所有 CPU 的平均值)
字段 | 解释 |
---|---|
%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%,表示设备即将达到饱和状态。 |
NFS 网络文件系统(针对已安装的每个网络文件系统的分类统计)
字段 | 解释 |
---|---|
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 服务器文件系统每秒受理的写操作的数量。 |
应用实例
- 显示所有设备负载情况
iostat
复制代码
- 定时显示所有信息
iostat 2 3
复制代码
参考文档
- iostat命令
- 《Linux 常用命令简明手册》—— 邢国庆编著