命令详解

重要星级:

★★★★☆

功能说明:

iostat 是 I/O statistics ( 输入/输出统计 ) 的缩写,其主要功能是对系统的磁盘 I/O 操作进行监视、它的输出主要是显示磁盘读写操作的统计信息。同时也会给出 CPU 的使用情况。同 vmstat 命令一样,iostat 命令也不能对某个进程进行深入分析,仅会对系统的整体情况进行分析。

语法格式:

    iostat [option] [interval [count]]
iostat [选项] [时间间隔 [次数]]

说明:

1. 在 iostat 命令及后面的选项里,每个元素之间都至少要有一个空格。
            2. interval 表示两次输出之间的间隔时间。
            3. count 表示按照 delay 指定的时间间隔统计的次数。

选项说明:

-c :显示 CPU 的使用情况。  ※

-d :显示磁盘的使用情况。 ※

-k :每秒以 KB 为单位显示数据。

-m :每秒以 MB 为单位显示数据。

-n :显示 NFS 的使用情况。

-t :显示每次统计的执行时间。

-p device :指定要统计的磁盘设备名称,默认为所有的磁盘设备。

-x :显示扩展统计。

使用范例:

显示所有设备的负载情况( iostat ):

[root@localhost :~]# iostat     # 如果省略 "时间间隔" 和 "次数" 参数,则仅显示一次报告后就退出。
Linux 3.10.0-862.14.4.el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.12 0.01 0.00 99.84 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.76 11.79 2.13 133653 24137
dm-0 0.72 10.88 1.95 123336 22089
dm-1 0.01 0.20 0.00 2228 0

以下是命令结果说明:

第1-2行中各列的含义具体如下:
1. %user :用户进程消耗的 CPU 时间百分比。
2. %nice :改变过优先级的进程占用的 CPU 时间百分比。
3. %system :系统 ( 内核 ) 进程消耗的 CPU 时间百分比。
4. %iowait :IO 等待所占用的 CPU 时间百分比。
5. %steal :虚拟机强制 CPU 等待的时间百分比。
6. %idle : CPU 处在空闲状态的时间百分比。
第3-4行中各列的含义具体如下:
1. tps :表示该设备每秒的传输次数,"一次传输" 的意思是 "一次I/O请求",多个逻辑请求可能会被合并为 "一次I/O请求","一次传输" 请求的大小是未知的。
2. kB_read/s :表示每秒从设备 (drive expressed ) 读取的数据量。
3. kB_wrtn/s :表示每秒向设备 (drive expressed ) 写入的数据量。
4. kB_read :表示读取的总数据量。
5. kB_wrtn :表示写入的总数量数据量;这些单位都为 Kilobytes。

定时显示所有信息( iostat 2 3 ):

[root@localhost :~]# iostat          # 每隔两秒刷新显示一次,共显示三次。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.12 0.01 0.00 99.84 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.70 10.57 2.10
dm- 0.66 9.75 1.94
dm- 0.01 0.18 0.00 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.25 0.00 0.00 99.75 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00
dm- 0.00 0.00 0.00
dm- 0.00 0.00 0.00 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00
dm- 0.00 0.00 0.00
dm- 0.00 0.00 0.00

只显示磁盘统计信息( iostat -d ):

[root@localhost :~]# iostat -d        # 选项 -d 只显示磁盘的统计信息。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.69 10.47 2.08
dm- 0.66 9.67 1.92
dm- 0.01 0.17 0.00 [root@localhost :~]# iostat -d -k # 选项 -k 以 KB 为单位显示数据。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.69 10.43 2.07
dm- 0.65 9.62 1.91
dm- 0.01 0.17 0.00 [root@localhost :~]# iostat -d -m # 选项 -m 以 MB 为单位显示数据。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 0.68 0.01 0.00
dm- 0.65 0.01 0.00
dm- 0.01 0.00 0.00 [root@localhost :~]#

查看扩展信息( iostat -x ):

[root@localhost :~]# iostat -x        # 选项 -x 显示扩展信息。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.12 0.01 0.00 99.84 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.03 0.38 0.29 10.25 2.05 36.33 0.00 1.26 0.83 1.83 0.49 0.03
dm- 0.00 0.00 0.33 0.32 9.46 1.89 35.12 0.00 1.70 0.97 2.45 0.50 0.03
dm- 0.00 0.00 0.01 0.00 0.17 0.00 47.40 0.00 0.22 0.22 0.00 0.15 0.00

以下是命令结果说明:

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了( 当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge )。
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
r/s :每秒发送给设备的读取请求数;The number of read requests that were issued to the device per second。
w/s :每秒发送给设备的写取请求数;The number of write requests that were issued to the device per second。
rkB/s :每秒读入的千字节数。
wkB/s :每秒写入的千字节数。
avgrq-sz :设备平均每次进行 I/O 操作的数据大小( 扇区 )。
avgqu-sz :平均 I/O 队列长度。
await :每一个 I/O 请求的处理的平均时间 ( 毫秒 )。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
svctm :设备平均每次 I/O 操作的服务时间 ( 毫秒 )。服务时间包括:磁头寻道时间(目前平均为3毫秒)+旋转延迟时间(磁盘转速相关)+数据传输时间 ( 简单计算时可忽略不计 )
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的 %util = 0.8/ = %,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是 100% 表示设备已经接近满负荷运行了 ( 当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈 )。

说明:

1. 注意 %util 的陷阱和 svctm 数值全部都不可取
            2. IOSTAT中关于%util,svctm存在的陷阱及解决办法

只查看 CPU 的统计信息:

[root@localhost :~]# iostat -c       # 使用了 -c 选项只显示系统 CPU 的统计信息。
Linux 3.10.-862.14..el7.x86_64 (localhost.localdomain) 2018年12月27日 _x86_64_ ( CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.03 0.00 0.12 0.01 0.00 99.83

参考资料:

  1. Linux命令详解----iostat
  2. IOSTAT中关于%util,svctm存在的陷阱及解决办法
  3. iostat和iowait详细解说

Linux 系统管理命令 - iostat - I/O 信息统计的更多相关文章

  1. Linux系统管理命令

    Linux系统管理命令 命令 说明 stat 显示指定文件的相关信息,比ls命令显示内容更多 who 显示在线登录用户 hostname 显示主机名称 uname 显示系统信息 top 显示当前系统中 ...

  2. 尚学linux课程---7、linux系统管理命令

    尚学linux课程---7.linux系统管理命令 一.总结 一句话总结: 查网络:netstat -ntpl 查进程:ps 1.需要下载163yum源(从外部源同步仓库)里面的所有rpm文件? re ...

  3. linux系统管理命令(五)

    [教程主题]:1.系统管理命令 [1.1]用户和组管理 在Linux操作系统中,任何文件都归属于某一特定的用户,而任何用户都隶属于至少一个用户组.用户是否有权限对某文件进行访问.读写以及执行,受到系统 ...

  4. S11 Linux系统管理命令

    11.1 lsof:查看进程打开的文件 11.2 uptime:显示系统的运行时间及负载 11.3 free:查看系统内存信息 11.4 iftop:动态显示网络接口流量信息 11.5 vmstat: ...

  5. Linux 系统管理命令 - mpstat - CPU信息统计

    命令详解 重要星级: ★★★★☆ 功能说明: mpstat 是 Multiprocessor Statistics 的缩写,是一种实时系统监控工具.mpstat 命令会输出 CPU 的一些统计信息,这 ...

  6. Linux系统管理命令(1)accton的使用

    安装: apt install acct accton accton命令是Linux系统进程管理命令之一,它的作用是打开进程统计,如果不带任何参数,即关闭进程统计.         具体用法为:acc ...

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

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

  8. linux系统管理命令--系统测试工具

    1.tcpdump -n  使用IP地址表示主机,而不是主机名的:使用数字port号码,而不是服务名 -i    指定要监听的网卡接口, "-i any"表示抓取全部网卡接口上的数 ...

  9. Linux Linux系统管理命令

    df 检测文件系统的磁盘空间占用和空余情况 --用于检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对接点和磁盘块的使用情况 --df [参数] --常用参数及含义 "-a&quo ...

随机推荐

  1. Mysql相关工具

    •Mysql相关工具 –Mysqlslap  压力测试工具 –Mysqlsla  日志分析工具 –Mysqlreport   效能监控工具 –Mysqlproxy  快速实现读写分离以及负载均衡 –p ...

  2. (二)Commonjs规范与模块化

    在之前的学习中我们使用require()来引入我们需要的包,这其实就是模块化,各模块相互独立,可以通过某种方式引入别的模块.而这些引入方式都是遵循一定的规范的,这就是CommonJS规范. 一.Com ...

  3. HDU 5668 Circle

    中国剩余定理. 可以手动模拟一下每一次开始的人的编号和结束的人的编号. 每次删掉一个人,对剩下的人重新编号. 这样一次模拟下来,可以得到n个方程 形如:(u[i]+k)%(n-i+1)=v[i] 化简 ...

  4. 原生js中stopPropagation,preventDefault,return false的区别

    1.stopPropagation:阻止事件的冒泡,但不阻止事件的默认行为. 最好莫过于用例子说明: <div id='div'  onclick='alert("div") ...

  5. Protobuf 完整解析 - 公司最常用的数据交互协议

    Google Protocol Buffer(简称 Protobuf)是一种轻便高效的结构化数据存储格式,平台无关.语言无关.可扩展,可用于通讯协议和数据存储等领域. 数据交互xml.json.pro ...

  6. Maven创建项目时出现Generating project in Interactive mode就一直卡住的解决方案

    使用maven命令在创建项目的时候出现 Generating project in Interactive mode 然后就一直卡住 网上搜做了很多解决方案 有说各种方案的,最后找到了一种.实验成功 ...

  7. java下XML与JSON互相转换的Utils类

    原文:http://heipark.iteye.com/blog/1394844 需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下: < ...

  8. 创立一个站点的前前后后(起因,域名,云平台,备案,CDN等等)(1)

    起因 写完<完美软件开发:方法与逻辑>这书后,原本想继续写书的,可出来參加了些社区活动后,我发现我写的书大家评价还行.但事实上不太理解.而接下来想写的书更加抽象点.准备叫<管理的解析 ...

  9. hdoj 1203 I NEED A OFFER! 【另类01背包】【概率背包】

    题意:... 策略:动态规划. 由于是求至少能得到一个offer的概率,那我们能够反着求.求得不到一个offer的概率.最后用1减去就好了. 代码: #include<string.h> ...

  10. 区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法

    Integer类有两个看起来很类似的静态方法,一个是Integer.getInteger(String),另外一个是Integer.valueOf(String).如果只看方法名称的话,很容易将这两个 ...