主页 > 知识库 > 服务器 > Linux/BSD >

linux iostat命令输出简要说明

来源:中国IT实验室 作者:佚名 发表于:2013-07-04 14:19  点击:
iostat是Linux系统内置工具,用于查看机器的CPU时间片分配情况统计或硬盘IO统计。 由于强大的top命令的存在(输出更详细的CPU/Memory统计数据),因此,在绝大多数场合下,iostat用来查看硬盘设备的IO状态,在分析机 器IO压力或瓶颈时尤其有用。 本笔记主要参
 iostat是Linux系统内置工具,用于查看机器的CPU时间片分配情况统计或硬盘IO统计。 由于强大的top命令的存在(输出更详细的CPU/Memory统计数据),因此,在绝大多数场合下,iostat用来查看硬盘设备的IO状态,在分析机 器IO压力或瓶颈时尤其有用。
  本笔记主要参考了man iostat英文解释,旨在说明iostat的典型用法及其输出数据的含义。
  1. iostat的默认输出
  在shell终端输入iostat命令后,其默认输出如下:
  [plain]
  Linux 2.6.9xenu_7-0-0-0 (demo-hostname) 06/21/2013
  avg-cpu: %user %nice %sys %iowait %idle
  1.65 0.00 0.62 0.60 97.12
  Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
  sda1 1.29 1.09 12.38 11546642 130611280
  sda2 0.00 0.00 0.00 296 0
  sda3 11.79 142.71 395.95 1505879770 4178084600
  由man可知,若iostat在该机器上是首次执行,则输出统计的采集时间范围为机器启动时刻到本次iostat命令执行时刻的时间段。否则,采集时间范围为上次iostat执行时刻到本次执行时刻的时间段。
  从输出内容可知,iostat先输出的第1行为linux kernel version及hostname及命令运行时刻,后面几行的内容则分为2部分:cpu统计;Device统计,下面分别说明。
  1)cpu统计输出
  在kernel 2.6.9的机器上,avg-cpu输出内容由5个字段构成,其中%user/%nice/%sys/%idle比较容易理解,此处不再赘 述。%iowait表示由于机器响应磁盘IO请求导致的CPU空闲时间,对于部署有IO密集型应用的机器,该字段的值通常比CPU密集型的机器对该字段的 统计值要大。
  在kernel版本为2.6.32的机器中,可能还会有%steal字段,其含义为:
  Show the percentage of time spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing another virtual processor.
  2)Device统计输出
  这里的Device通常就是hard disk,即硬盘。输出包括6个字段,下面分别说明。
  Device: 机器上的设备列表,通常是块设备名(在linux中,与块设备相对应的是字符设备,两者的区别可以参考这里来了解)或分区名,如上面示例中的sda1/sda2/sda3;
  tps: 每秒针对设备的传输次数(transfers),这里的"传输"是指I/O请求。需要注意的是,逻辑上的多次请求可能会被操作系统优化合并为一次I/O请 求,linux系统对磁盘访问的调度算法就采用了这个策略(若感兴趣,可在这篇文章中搜索关键词"merging"来了解linux的io scheduler对requests merging的优化);
  Blk_read/s: 每秒从设备读取的数据大小,在这里,数据量以block为单位来描述。在kernel 2.4及之后版本中,block即指扇区(sector),因此,1 block = 512 bytes;在kernel 2.4之前的版本中,block的大小不确定;
  Blk_wrtn/s: 每秒向设备写入的数据大小,数据大小同样用block来描述;
  Blk_read: 系统上电以来,从设备读取的数据总数(单位:block);
  Blk_wrtn: 系统上电以来,向设备写入的数据总数(单位:block)。

有帮助
(0)
0%
没帮助
(0)
0%