http://blog.csdn.net/tinyhare/article/details/7999829

iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
iostat的语法如下:

iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ]
-c为汇报CPU的使用情况;
-d为汇报磁盘的使用情况;
-k表示每秒按kilobytes字节显示数据;
-t为打印汇报的时间;
-v表示打印出版本信息和用法;
-x device指定要统计的设备名称,默认为所有的设备;
interval指每次统计间隔的时间;
count指按照这个时间间隔统计的次数。

[root@yufei ~]# iostat -x
Linux 2.6.32-131.0.15.el6.x86_64 (yufei.opsers.org)     08/18/2011  _x86_64_    (1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle2.56    0.00    3.66   11.74    0.00   82.04Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
scd0              0.68     0.00    1.37    0.00     8.23     0.00     5.99     0.00    2.23   2.23   0.31
sda              30.97    18.75   33.92    8.67  1819.19   219.32    47.86     0.29    6.91   3.26  13.87
sdb               1.83     0.00    1.25    0.00    10.05     0.00     8.06     0.00    0.27   0.27   0.03

结果参数说明:

% user      显示了在用户级(应用程序)执行时产生的 CPU 使用率百分比。

% sys       显示了在系统级(内核)执行时产生的 CPU 使用率百分比。

% idle       显示了在 CPU 空闲并且系统没有未完成的磁盘 I/O 请求时的时间百分比。

% iowait   显示了 CPU 空闲期间系统有未完成的磁盘 I/O 请求时的时间百分比。

rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s

wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s

r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s

w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s

rsec/s: 每秒读扇区数。即 delta(rsect)/s

wsec/s: 每秒写扇区数。即 delta(wsect)/s

rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

wkB/s: 每秒写K字节数。是 wsect/s 的一半。

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)

%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

iostat案例

  1. # iostat 101

  2. avg-cpu: %user %nice %sys %idle

  3. 15.240.004.3180.45

  4. Device: rrqm/s  wrqm/s  r/s  w/s   rsec/s  wsec/s  rkB/s  wkB/s  avgrq-sz  avgqu-sz await svctm  %util

  5. sda      0.0045.001.5229.008.23555.554.08300.2119.2220.1277.234.8413.19

以上输出结果,相关参数分析如下:
rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/s
wrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/s
r/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/s
rsec/s: 每秒读扇区数.即 delta(rsect)/s
wsec/s: 每秒写扇区数.即 delta(wsect)/s
rkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.
wkB/s: 每秒写K字节数.是 wsect/s 的一半.
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).
await: 平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
svctm: 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的.即 delta(use)/s/1000

结合上面的输入结果分析一下io状态:
1秒内设备 I/O 操作: 总IO(io)/s = r/s(读) +w/s(写) = 1.52+29.00 = 30.52 (次/秒) 。
平均每次设备 I/O 操作只需要 4.84ms 就可以完成,但每个 I/O 请求却需要等上 77.23ms,这是由于发出的 I/O 请求太多,每秒钟31个。这个值可以通过如下公式计算得出,假设他们都是同时发出io:
平均等待时间 = 单个 I/O 服务时间 * ( 1 + 2 + … + 请求总数-1) / 请求总数=4.84ms * (1+2+....+30)/31 = 72.6ms 这个值和上面输出的等待值77.23差不多说明是同时发出的io请求。
每秒发出的 I/O 请求30.52,平均队列却不长 只有 2.01( 因为 iostat 中有 bug,avgqu-sz 值应为 2.01,而不是 20.12.),这表明这 30.52 个请求的到来并不均匀,大部分时间 I/O 是空闲的.
一秒中有 13.19% 的时间 I/O 队列中是有请求的,而86.81% 的时间里 I/O 系统无事可做,所有 29 个 I/O 请求都在很短时间之内处理掉了.

另一个指标如果 %util 使用率很大接近100%,说明产生的I/O请求太多,I/O系统负荷很大,可能过载,则说明磁盘可能存在瓶颈.网上还提供了一种vmstat 查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)。await 的参数也要多和 svctm 来参考.差的过高就一定有 IO 的问题.
avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会高.也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的.

还有一个参数指标如下:
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加.await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式.如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU.队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水.


vmstat监视内存使用情况

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

vmstat的语法如下:

vmstat [-V] [-n] [delay [count]]

-V表示打印出版本信息;

-n表示在周期性循环输出时,输出的头部信息仅显示一次;

delay是两次输出之间的延迟时间;

count是指按照这个时间间隔统计的次数。

[root@yufei ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st0  0   4116  38560  24456  90224    5   11   595    71   96  134  2  2 88  8  0

结果参数说明:

Procs

r:等待执行的任务数

b:处在非中断睡眠状态的进程数

展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了

Memory

swpd:正在使用的swap大小单位K

free:空闲的内存空间

buff:已使用的buff大小,对块设备的读写进行缓冲

cache:已使用的cache大小,文件系统的cache

inact:

active:

Swap

si:交换内存使用,由磁盘调入内存

so:交换内存使用,由内存调入磁盘

IO

bi:从块设备读入的数据总量(读磁盘) (KB/s)

bo:写入到块设备的数据总理(写磁盘) (KB/s)

System

in:每秒产生的中断次数

cs:每秒产生的上下文切换次数

上面这2个值越大,会看到由内核消耗的CPU时间会越多

CPU

us:用户进程消耗的CPU时间百分比

us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了

sy:内核进程消耗的CPU时间百分比

sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。

id:空闲

wa:IO等待消耗的CPU时间百分比

wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。

再一次提醒:如果说,你的系统没有上述命令,你需要通过yum provides "*bin/iostat" 和yum provides "*bin/vmstat" 来查询并安装相应的软件包,类似的相关问题,在以前的博客中也提及到,这里再来提醒一次!因为这是解决问题的方法。

Linux iostat和vmstat命令相关推荐

  1. avast! for linux/unix servers,最常见的Linux/Unix监控工具vmstat命令详解

    最常见的Linux/Unix监控工具vmstat命令详解 vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率.内存使用.虚拟内存交换 ...

  2. linux vmstat_Linux中vmstat命令指南

    linux vmstat An acronym for "Virtual Memory Statistics", the vmstat command is a Linux uti ...

  3. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

  4. Linux存储性能观测——vmstat命令详解

    功能:获得有关进程.虚存.页面交换空间及 CPU活动的信息 特点: 可以看到整个系统的负载情况,而不是单独看某个进程的负载情况. $ vmstat procs -----------memory--- ...

  5. linux tf命令,Linux系统命令介绍之vmstat命令详解

    今天小编要跟大家介绍的vmstat命令详解.熟悉Linux系统和使用Linux系统工作的小伙伴都知道Linux的命令有很多,而真正在工作中用到的命令应该不超过几十个,为了让大家更好的掌握这些命令,小编 ...

  6. 每天一个linux命令(46):vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深 ...

  7. Linux磁盘下面有个mpatha,Linux中如何使用vmstat命令

    Linux下vmstat 命令可用于报告虚拟内存的统计信息,除此之外,vmstat 命令还有很多用法,下面系统之家的小编将给大家做个vmstat 命令的详细介绍,以便你有个了解. 它是对系统的整体情况 ...

  8. Linux 命令(125)—— vmstat 命令

    1.命令简介 vmstat(Virtual Memory Statistics)命令用于报告虚拟内存状态的统计信息. vmstat 不仅可以监测虚拟内存,也可监测进程.物理内存.内存分页.磁盘和 CP ...

  9. Linux vmstat命令

    介绍 vmstat 命令是VirtualMeomory Statistics (虚拟内存统计)的缩写.是针对系统的整体情况(虚拟内存.进程.CPU)的监控,而对进程进行监控的是top 首先,谈一谈什么 ...

最新文章

  1. go linux 源码编译环境,Linux 源码安装 GO 环境
  2. STM32单片机外部中断配置讲解
  3. Golang实现requests库
  4. 计算机启动操作系统的过程,操作系统启动过程
  5. 分享18个常用的网站性能测试工具
  6. if you do applications
  7. 深入 Python :Dive Into Python 中文版 读书笔记 第13,14,15单元测试
  8. go 返回mysql数组_Go基础之--操作Mysql(一)
  9. 前端学习(1714):前端系列javascript之项目配置
  10. 7-26 Windows消息队列(25 分)
  11. cin gt gt a用c语言怎么写写,cin、cin.get()、cin.getline()、getline()、gets()等函数的用法...
  12. SQLServer之修改CHECK约束
  13. 错误记录 MongoClient opened before fork. Create MongoClient
  14. 单向关联java_java – 使用单向或双向关系的不同行为
  15. 革文B2B行业洞察:增长/存亡,中国医疗加速器第三方维保市场迷局
  16. D3.jsV5入门教程
  17. 电脑配置要多少功率的电源?电源功率越大越好吗?
  18. 前端一键自动部署工具
  19. 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
  20. map中自定义比较函数

热门文章

  1. 谷歌推出TensorFlow Lattice,让机器学习模型适应总体趋势
  2. 关于数据型驱动自动化测试实现
  3. 作用域闭包,你真的懂了吗?
  4. WinDBG脚本入门
  5. VMWare tools的安装过程及文件共享设置
  6. 三、系统的开关机和PDC简介
  7. 关于C#传给视图的字符串带有Html转义字符的处理
  8. 微信测试公众号-jssdk基本配置和使用-thinkphp
  9. KandQ:单例模式的七种写法及其相关问题解析
  10. 图片轮播器(swift)