iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具,在 Ubuntu 系统中默认是不带 iostat 命令的,需要自行安装:
$ sudo apt install sysstat
注意:本文中 demo 的演示环境为 ubuntu 18.04。

主要作用

iostat 主要用于监控系统设备的 IO 负载情况,iostat 首次运行时显示自系统启动开始的各项统计信息,之后运行 iostat 将显示自上次运行该命令以后的统计信息。
iostat 的特点是汇报磁盘活动统计情况,同时也会汇报出 CPU 使用情况。CPU 统计数据是作为所有处理器之间的平均值在系统范围内计算的。iostat 也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

基本语法

语法格式:
iostat <options> <device name>

常用选项:
-c 只显示 CPU 的信息
-d 只显示设备信息
--human 以友好的方式显示结果
-j { ID | LABEL | PATH | UUID | ... }  显示设备的持久化名称
-k  以 k 为单位显示
-m 以 m 为单位显示
-N 显示任何设备映射器设备的注册设备映射器名称,用于查看LVM2统计数据
-p [ { device [,...] | ALL } ] 显示块设备及其分区的信息
-t 显示每次输出的时间
-V 显示 iostat 的版本信息
-x 显示更多的设备列
-z 如果没有变化就不重复输出信息
interval 连续输出,每 interval 秒输出一次
count 与 interval 连用,指定一共输出多少次

CPU 信息

iostat 输出中的 CPU 部分是对 CPU 使用情况的统计信息(以百分比的形式显示):

user
进程在用户地址空间中消耗 CPU 时间的百分比。像 shell 程序、各种语言的编译器、数据库应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程。这些程序如果不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态。

nice
可以通过 nice 值调整进程用户态的优先级。这里显示的是调整过 nice 值的进程消耗掉的 CPU 时间。如果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0。

system
进程在内核地址空间中消耗 CPU 时间的百分比。所有进程要使用的系统资源都是由 Linux 内核处理的。当处于用户态(用户地址空间)的进程需要使用系统的资源时,比如需要分配一些内存、或是执行 IO 操作、再或者是去创建一个子进程,此时就会进入内核态(内核地址空间)运行。事实上,决定进程在下一时刻是否会被运行的进程调度程序就运行在内核态。对于操作系统的设计来说,消耗在内核态的时间应该是越少越好。在实践中有一类典型的情况会使 sy 变大,那就是大量的 IO 操作,因此在调查 IO 相关的问题时需要着重关注它。

iowait
CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 iowait 来判断系统的性能瓶颈是不是过多的 IO 操作造成的。

steal
只有 Linux 在作为虚拟机运行时 steal 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)。

idle
CPU 处于 idle 状态的百分比。一般情况下, user + nice + idle 应该接近 100%。

设备信息

设备报告提供每个物理设备或分区的统计信息。可以在命令行中指定要显示统计信息的块设备和分区。如果没有输入设备或分区,那么将显示系统使用的每个设备的统计信息,并提供内核为其维护统计信息。如果命令行上给出了 ALL 关键字,那么将显示系统定义的每个设备的统计信息,包括那些从未使用过的设备。默认情况下,传输速率显示在 1K 块中,除非设置环境变量POSIXLY_CORRECT,在这种情况下使用 512 字节块。根据所使用的标志,报告可显示以下字段:

Device
Device 列显示 /dev 目录中列出的设备(或分区)名称。

tps
每秒发送到设备的 I/O 请求数。多个逻辑请求可以组合成对设备的单个 I/O 请求。

Blk_read/s
每秒读取的磁盘块的数量。

Blk_wrtn/s
每秒写入的磁盘块的数量。

Blk_read
读取的块的总数。

Blk_wrtn
写入的总块数。

r/s
设备每秒完成的读请求数(合并后)。

w/s
设备每秒完成的写请求数(合并后)。

sec/s
每秒从设备读取或写入的扇区数。

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

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

rqm/s
每秒钟排队到设备的合并后的 I/O 请求数量。

rrqm/s
每秒钟排队到设备的合并后的读请求数。

wrqm/s
每秒钟排队到设备的合并后的写请求数。

%rrqm
在发送到设备之前合并到一起的读请求的百分比。

%wrqm
在发送到设备之前合并到一起的写请求的百分比。

areq-sz
向设备发出的 I/O 请求的平均大小(单位为 k)。

rareq-sz
向设备发出的读请求的平均大小(单位为 k)。

wareq-sz
向设备发出的写请求的平均大小(单位为 k)。

await
平均每次 I/O 操作的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。

r_await
平均每次读请求的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。

w_await
平均每次写请求的时间(以毫秒为单位)。这包括请求在队列中花费的时间和执行它们所花费的时间。

aqu-sz
发送到设备的请求的平均队列长度。

%util
向设备发出 I/O 请求的运行时间百分比(设备的带宽利用率),换句话说就是一秒中有百分之多少的时间用于 I/O 操作。当连续处理请求的设备的这个值接近100%时,说明产生的 I/O 请求太多,I/O 系统已经满负荷,该磁盘可能存在瓶颈。但是对于并行处理请求的设备,例如 RAID 阵列和现代 SSD,这个数字并不反映它们的性能限制。

常见用法

默认显示 CPU 信息和所有的设备信息

$ iostat

只显示 CPU 的信息

$ iostat -c

只显示设备信息

$ iostat -d

还可以指定只显示某一个或多个设备的信息

显示块设备及其分区的信息

$ iostat -d -p sdb

还可以通过逗号分隔同时指定多个磁盘设备:

以 M 为单位显示数字

$ iostat -m -d sdb

显示时间戳

$ iostat -t -d sdb

显示更多的设备信息

$ iostat -x -d sda

连续输出
iostat 支持连续地输出信息,我们只要指定一个以秒为单位的间隔时间就行了:

$ iostat 2 -d sda

此时,每隔两秒会输出一次信息。还可以再指定一个数字告诉 iostat 一共输出多少次信息,比如每隔两秒输出一次,一共输出三次的写法为:

$ iostat 2 3 -d sda

显示 LVM2 设备的映射名称

$ iostat -d -N

显示设备的持久化名称

$ iostat -d -j ID

除了 ID,还可以指定 LABEL、PATH 和 UUID 等显示方式。

参考:
iostat man page

转载于:https://www.cnblogs.com/sparkdev/p/10427049.html

Linux iostat 命令相关推荐

  1. Linux iostat命令详解

    Linux iostat命令详解 iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载. 1.命令格式: iostat 参数 时间 次数 2. ...

  2. linux iostat 命令 统计信息 cpu 块设备 分区 io

    iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息.iostat 是 sysstat 工具集的一个工具,在 ...

  3. linux下iostat命令无效,linux iostat命令详解

    iostat iostat用于输出CPU和磁盘I/O相关的统计信息. 命令格式: iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ devic ...

  4. linux iostat 命令详解

    iostat主要用于监控系统设备的IO负载情况,iostat提供了丰富的参数给我们查询各种维度的io数据, iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行 ...

  5. iostat linux,iostat 命令详解

    概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息. iostat属于sysstat软件包.可以用yum install sysstat 直接安装. iostat 用法 用法:iostat ...

  6. Linux iostat命令解析

    以前一直不太会用这个参数.现在认真研究了一下iostat,因为刚好有台重要的服务器压力高,所以放上来分析一下.下面这台就是IO有压力过大的服务器 # iostat -x 1 10 Linux 2.6. ...

  7. linux who命令功能,Linux who命令详解

    who 命令显示关于当前在本地系统上的所有用户的信息.显示以下内容:登录名.tty.登录日期和时间.输入whoami 显示您的登录名.tty.您登录的日期和时间.如果用户是从一个远程机器登录的,那么该 ...

  8. linux中jstack命令详解,Linux jstack命令详解

    jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息. 如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack ...

  9. linux ntpdate代码,Linux ntpdate命令详解

    ntpdate命令用于同步更新互联网时间,或者NTP服务器时间 NTP服务器[Network Time Protocol(NTP)]是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源 ...

最新文章

  1. Android四大组件之——Activity的生命周期(图文详解)
  2. 判断一段文件是UTF-8编码还是GB2312的编码方式
  3. 应用框架的设计与实现学习手札系列(持续更新)
  4. .NET Oracle连接方法
  5. SQLServer------存储过程的使用
  6. 一周第一次课(10月16日)安装linux
  7. 如何减小Exe, DLL 的大小
  8. 数组异或交换出现的问题
  9. android studio mac svn插件,Mac下Android Studio升级SVN1.8(使用1.8format来checkout项目)
  10. dsp2812软件周期耗时测试,基于DSP2812设计的简易数字频率计
  11. 中文 Uncode 编码范围
  12. gitlab发邮件收不到
  13. 格物斯坦:机器人高手决战申城,IRM开启孩子新视界
  14. 渗透测试之通道构建Cheat Sheet
  15. H5编辑器H5-Dooring2.30更新指南
  16. 专硕计算机学院排名,考研计算机院校排名
  17. 微信入口绑定,微信事件处理,微信API全部操作
  18. matlab实现nc文件批量转tif文件
  19. android 开发论坛资源URL
  20. 【python 图片文字识别】pyocr图片文字识别

热门文章

  1. Oracle数据库与Access互导实例
  2. memcache调整value大小限制
  3. object-c 随机数总结
  4. 42.Android之ListView中ArrayAdapter简单学习
  5. Java Web编程的主要组件技术——Hibernate入门
  6. ARM assembly instruction set 汇总(一)
  7. 【题解】弃疗Nim (2019,5.23)
  8. Zabbix Server安装
  9. autocomplete=off inpu属性
  10. java web轻量级开发面试教程内容精粹:哪些简历得不到面试机会