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  -d sda

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

$ iostat   -d sda

显示 LVM2 设备的映射名称

$ iostat -d -N

显示设备的持久化名称

$ iostat -d -j ID

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

参考:
iostat man page

Linux iostat 命令的更多相关文章

  1. linux iostat命令详解 磁盘操作监控工具

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视. 它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况. ...

  2. Linux - iostat命令详解

    简介 iostat可以提供更丰富的IO性能状态数据,iostat命令有两个用途: 输出CPU的统计信息 输出设备和分区的I/O统计信息 命令语法及参数说明 语法: iostat [ -c | -d ] ...

  3. [linux]iostat命令详解-监视系统输入输出设备和CPU的使用情况

    部分转载https://blog.csdn.net/sunansheng/article/details/51942281 iostat命令被用于监视系统输入输出设备和CPU的使用情况.它的特点是汇报 ...

  4. Linux基础命令---iostat显示设备状态

    iostat iostat指令用来显示cpu状态,系统IO设备的状态,以及相关磁盘和NFS使用状态.iostat命令通过观察设备相对于其平均传输速率的活动时间来监视系统输入/输出设备负载.iostat ...

  5. 使用vmstat和iostat命令进行Linux性能监控【转】

    转自:https://linux.cn/article-4024-1.html 这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系 ...

  6. Linux系统性能监控之6个vmstat和6个iostat命令

    这篇文章主要介绍一些Linux性能检测相关的命令. vmstat和iostat的两个命令可以运行在主流的Linux/Unix操作系统上. 如果vmstat和iostat命令不能再你的电脑上运行,请安装 ...

  7. vmstat和iostat命令进行Linux性能监控

    这是我们正在进行的Linux命令和性能监控系列的一部分.vmstat和iostat两个命令都适用于所有主要的类unix系统(Linux/unix/FreeBSD/Solaris). 如果vmstat和 ...

  8. Linux 安装iostat命令

    首先跟你的Linux系统有关 我用的是Red hat系统 记录下最快的安装iostat命令的方式 起初想查看iostat, 提示 iostat: command not found 于是,通过yum ...

  9. Linux 系统管理命令 - iostat - I/O 信息统计

    命令详解 重要星级: ★★★★☆ 功能说明: iostat 是 I/O statistics ( 输入/输出统计 ) 的缩写,其主要功能是对系统的磁盘 I/O 操作进行监视.它的输出主要是显示磁盘读写 ...

随机推荐

  1. MS SQL作业Schedule的限制注意事项

      最近遇到了一个关于MS SQL作业Schedule下有限制的特殊案例,有一个作业,用户要求执行的时间为:9:30,14:30,16:30, 19:00,于是我设置了两个Schedule,其中一个每 ...

  2. Cas 服务器 JDBC身份校验

    之前的Cas服务器一直使用静态配置的账号密码进行身份认证,现在要让Cas服务器通过MySQL数据库中的用户信息进行身份认证. 一.添加数据库访问依赖 <!-- https://mvnreposi ...

  3. request获取各种路径

    equest.getRealPath() 这个方法已经不推荐使用了,代替方法是: request.getSession().getServletContext().getRealPath() 在ser ...

  4. SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图文解决方法

    SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图文解决方法 SQL2008无法附加数据库,提示“无法显示请求的对话框”(nColIndex实际值是-1)图 ...

  5. jQuery ajax()使用serialize()提交form数据到后台

    1.选中要删除的学生信息 2.点击 删除选中 按钮,把复选框中的值取出提交到后台 3.后台获取选中的id 4.前端也跟着删除数据 示例代码: 前端代码: <!DOCTYPE html> & ...

  6. 排序算法之快速排序的思想以及Java实现

    1 基本思想 快速排序是在冒泡排序的基础上改进而来的,它是基于分治的思想.通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据 ...

  7. ArcMap2Sld:一个将MXD中图层配图样式转换为OGC的SLD文件的开源工具

    在一个项目中,用户采用GeoServer做为GIS服务器(原因嘛当然是免费能省钱,经过验证可能还会在性能和稳定性等表现力也有优越性),但是手上收集的数据都是ESRI格式的,这倒不打紧,因为GeoSer ...

  8. 转://工作中 Oracle 常用数据字典集锦

    DBA工作中数据字典就等同于我们本和笔,时时刻刻也分不开的,不管是看状态,还是监控,都需要数据字典的支持,本文整理出来常用的数据字典系列,帮助大家来记住和汇总以便查询利用 ALL_CATALOG Al ...

  9. sql 查询所有子节点示例

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code <!-- 查询机构的所有子机构 --> <select id=&qu ...

  10. Python框架学习之用Flask创建一个简单项目

    在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成 ...