iostat是Linux中被用来监控系统的I/O设备活动情况的工具,是input/output statistics的缩写。它可以生成三种类型的报告:

  1. CPU利用率报告
  2. 设备利用率报告
  3. 网络文件系统报告

iostat通过生成的报告来帮助管理员更好的调整系统设置来平衡各个物理磁盘之间的I/O负载。

Linux里iostat命令是在包含在系统包sysstat当中的,如果没有iostat命令则需事先安装sysstat系统包,可用yum命令来进行安装:

# yum install sysstat -y

主要说明

iostat [OPTION] [DEVICE] [INTERVAL [count]]

详细参数说明可以参考:http://man7.org/linux/man-pages/man1/iostat.1.html

报告说明

这里主要以经常用到的CPU磁盘I/O分析需要用到的报告为主。

CPU利用率报告(CPU Utilization Report)

如果服务器是多核CPU,则数值为所有核心数值的平均值。

%user: CPU处在用户(应用)级别的利用率百分比。
%nice:CPU处在用户级别且有`NICE`值的利用率百分比。
%system:CPU处在系统(内核)级别的利用率百分比。
%iowait:CPU等待系统I/O请求的时间百分比。
%steal:虚拟CPU无意识等待系统程序处理另外的虚拟处理器所花费时间的百分比。
%idle:CPU空闲的时间百分比。

设备利用率报告(Device Utilization Report)

Device:显示的是设备名或者是分区名。不同的内核版本有不同的显示方式。
tps:设备每秒的传输次数。一次传输就是对设备一次的`I/O`请求,多次的逻辑请求可以合并成单个`I/O`请求。
Blk_read/s:每秒从设备读取的数据量,以`BLOCK`方式计算,在内核`2.4`及之后版本中,每个`BLOCK`的大小为512字节。
Blk_wrtn/s:每秒写入设备的数据量。
Blk_read:总共读取的`BLOCK`数量。
Blk_wrtn:总共写入的`BLOCK`数量。
kB_read/s:每秒从设备读取的数据量,单位`KB`。
kB_wrtn/s:每秒写入设备的数据量,单位`KB`。
kB_read:总共从设备读取的数据量,单位`KB`。
kB_wrtn:总共写入设备的数据量,单位`KB`。
MB_read/s、MB_wrtn/s、MB_read、MB_wrtn:参考上述的信息描述,单位为`MB`。
rrqm/s:每秒合并的读请求数,当请求排队到设备时。
wrqm/s:每秒合并的写请求数,当请求排队到设备时。
r/s:每秒发送给设备的读请求数。
w/s:每秒发送给设备的写请求数。
rsec/s:每秒从设备读取的扇区数量。
wsec/s:每秒写入设备的扇区数量。
rkB/s:每秒从设备读取的`KB`数。
wkB/s:每秒写入设备的`KB`数。
rMB/s、wMB/s:参考上述的信息描述,单位为`MB`。
avgrq-sz:发送给设备请求的平均大小(以扇区为单位)。
avgqu-sz:发送给设备请求队列的平均长度。
await:发送给设备`I/O`请求的平均响应时间,单位是毫秒。包含请求于队列中的时间和服务于队列中的时间。
svctm:发送给设备`I/O`请求的平均服务时间。将在之后版本的`iostat`移除这个指标。
%util:发送给设备`I/O`请求消耗的时间的百分比。

主要选项

-c:显示CPU利用率报告。
-d:显示设备利用率报告。
-k:输出统计信息以`KB/S`显示。
-m:输出统计信息以`MB/S`显示。
-N:显示逻辑卷(LVM)的信息。
-n:显示NFS的信息。
-p [ { device [,...] | ALL } ]:显示指定的磁盘设备或者分区信息。
-t:显示报告的时间。timestamp格式由环境变量`S_TIME_FORMAT`决定。
-x:显示扩展的统计信息。
-y:忽略从系统启动到当前时间第一份报告。
-z:忽略显示不活动设备的信息。

主要用法

1、所有设备的负载情况

# iostat

Linux 2.6.32-358.el6.x86_64 (db) 10/25/2018 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.60 0.00 0.39 0.42 0.00 98.60 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 1.83 0.84 26.61 1437902 45525316

OR

# iostat -x

Linux 2.6.32-358.el6.x86_64 (db) 10/25/2018 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
0.60 0.00 0.39 0.42 0.00 98.60 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.01 1.38 0.03 1.81 0.84 26.61 14.97 0.01 3.23 4.01 3.21 2.89 0.53

2、显示CPU信息

# iostat -c 1 5
Linux 2.6.32-358.el6.x86_64 (db)        10/25/2018      _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
0.60 0.00 0.39 0.42 0.00 98.60 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 10.00 0.00 90.00 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00 avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00

3、显示TPS

# iostat -d -k 1 3
Linux 2.6.32-358.el6.x86_64 (db)        10/25/2018      _x86_64_        (1 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda 1.83 0.42 13.30 718951 22763214 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.00 0.00 0.00 0 0

4、显示设备使用率(%util)和响应时间(await)

# iostat -d -k -x 1 3
Linux 2.6.32-754.2.1.el6.x86_64 (db)  10/25/2018      _x86_64_        (24 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda 0.01 61.87 0.13 62.10 11.18 479.23 15.76 0.01 0.13 0.05 0.31 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 4.00 1.00 16.00 8.00 80.00 10.35 0.01 0.71 0.71 1.20 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 1.00 0.00 12.00 0.00 52.00 8.67 0.00 0.17 0.17 0.20

注意:

以上主要用法都是所有设备的信息,如果需要指定某个设备,则可以加设备名进行单独显示;

如果不包含服务器开机至今第一次统计信息的展示,则需要加上选项-y去除。

总结

  • %util如果接近于100%,则表明磁盘一直在处理I/O请求,系统I/O是满负载状态,磁盘可能会存在I/O瓶颈,因为如有多个磁盘并发,并不一定说明磁盘有瓶颈;
  • 响应时间await时间一般要低于5ms(<5ms),如果超过10ms(>10ms)就比较大了;
  • %idle如果少于30%,则I/O压力就比较大。

参考

☆〖本人水平有限,文中如有错误还请留言批评指正!〗☆

Linux Tools 之 iostat 工具总结的更多相关文章

  1. Linux IO时事检测工具iostat

    Linux IO时事检测工具iostat iostat命令用于检测linux系统io设备的负载情况,运行iostat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和时间来获得所需的统 ...

  2. linux 性能调优工具参考 (linux performance tools)

    之前发现几张图对于linux使用者有着较强的参考意义,下面对其进行简单备忘: # linux 静态信息查看工具 # linux 性能测试工具 benchmark # linux 性能观测工具 # li ...

  3. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  4. 使用Linux的命令行工具做简单的文本分析

    Basic Text Analysis with Command Line Tools in Linux | William J Turkel 这篇文章非常清楚的介绍了如何使用Linux的命令行工具进 ...

  5. linux系统监控常用工具

    linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h  显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 u ...

  6. 每天一个linux命令(37)--iostat命令

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

  7. 2. Packet crafting tools (封包工具 6个)

    2. Packet crafting tools (封包工具 6个) NetcatHping这个方便小巧的实用程序组装并发送定制的ICMP,UDP或TCP数据包,然后显示任何回复. 它受到ping命令 ...

  8. Linux系统IO分析工具之iotstat常用参数介绍

    Linux系统IO分析工具之iotstat常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.安装iostat [root@flume115 ~]# yum - ...

  9. Linux系统IO分析工具之iotop常用参数介绍

      Linux系统IO分析工具之iotop常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的 ...

随机推荐

  1. PyCharm彻底删除项目

    直接删除源文件,删不干净,会留下一些文件 1.点击File,选择Close Project 2.关闭项目之后,会弹出一个选择项目的界面,点击你想要删除的项目右边的叉 3.然后找到该项目所在的路径,选中 ...

  2. java中的字符串二

    public class TestString { public static void main(String[] args) { // TODO Auto-generated method stu ...

  3. ADB端口5037被占用 导致adb 停止工作

    解决ADB端口占用问题 方式一 5037为adb默认端口,若5037端口被占用,打开cmd,输入以下指令, 1.查看占用端口的进程PID  netstat -aon|findstr 5037 2. 通 ...

  4. 解决问题:Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

    Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean. 注释掉, ...

  5. (day51)三、ORM、路由层、版本差异、流程图

    目录 一.ORM关系建立 (一)ForeignKey(一对多) (二)ManyToManyField(多对多) (三)OneToOneField(一对一) 二.django请求生命周期流程图 三.ur ...

  6. JDOJ3004 超级楼梯

    JDOJ3004 超级楼梯 https://neooj.com/oldoj/problem.php?id=3004 题目描述 有一个超级楼梯共N级,刚开始时你在第一级,若每次只能跨上一级或两级,要走上 ...

  7. python进阶之命名空间与作用域

    命名空间 Namespace Namespace命名空间,命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值.命名空间的一大作用是避免名字冲突. python使用命名 ...

  8. Note | 期刊答复(response)

    第一次TPAMI回复整理的经验. 190926:TPAMI中了,特回来补充. 简洁 尤其对于问答型问题,一定要在前三句话就回答审稿人的问题:yes or no. 不要绕弯子,专注于审稿人问题,解决就行 ...

  9. PMP图表(必背)

  10. 下载代码的时候 SSH与http的区别

    SSH: git@gitlab.alibaba-inc.com:damai-mz/mz-market.git HTTP:http://gitlab.alibaba-inc.com/damai-mz/m ...