现在的位置: 首页 > 操作系统 > 正文

iostat的默认输出是什么?iostat-d-k或iostat-c是什么

2020年05月25日 操作系统 ⁄ 共 2738字 ⁄ 字号 评论关闭

  iostat是Linux系统内置工具,用于查看机器的CPU时间片分配情况统计或硬盘IO统计。由于强大的top命令的存在(输出更详细的CPU/Memory统计数据),因此,在绝大多数场合下,iostat用来查看硬盘设备的IO状态,在分析机器IO压力或瓶颈时尤其有用。下面学步园小编来讲解下iostat的默认输出是什么?iostat-d-k或iostat-c是什么?

  iostat的默认输出是什么

  在shell终端输入iostat命令后,其默认输出如下:

  [plain]

  Linux2.6.9xenu_7-0-0-0(demo-hostname)06/21/2013

  avg-cpu:%user%nice%sys%iowait%idle

  1.650.000.620.6097.12

  Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtn

  sda11.291.0912.3811546642130611280

  sda20.000.000.002960

  sda311.79142.71395.9515058797704178084600

  由man可知,若iostat在该机器上是首次执行,则输出统计的采集时间范围为机器启动时刻到本次iostat命令执行时刻的时间段。否则,采集时间范围为上次iostat执行时刻到本次执行时刻的时间段。

  从输出内容可知,iostat先输出的第1行为linuxkernelversion及hostname及命令运行时刻,后面几行的内容则分为2部分:cpu统计;Device统计,下面分别说明。

  1)cpu统计输出

  在kernel2.6.9的机器上,avg-cpu输出内容由5个字段构成,其中%user/%nice/%sys/%idle比较容易理解,此处不再赘述。%iowait表示由于机器响应磁盘IO请求导致的CPU空闲时间,对于部署有IO密集型应用的机器,该字段的值通常比CPU密集型的机器对该字段的统计值要大。

  在kernel版本为2.6.32的机器中,可能还会有%steal字段,其含义为:

  ShowthepercentageoftimespentininvoluntarywaitbythevirtualCPUorCPUswhilethehypervisorwasservicinganothervirtualprocessor.

  2)Device统计输出

  这里的Device通常就是harddisk,即硬盘。输出包括6个字段,下面分别说明。

  Device:机器上的设备列表,通常是块设备名(在linux中,与块设备相对应的是字符设备,两者的区别可以参考这里来了解)或分区名,如上面示例中的sda1/sda2/sda3;

  tps:每秒针对设备的传输次数(transfers),这里的"传输"是指I/O请求。需要注意的是,逻辑上的多次请求可能会被操作系统优化合并为一次I/O请求,linux系统对磁盘访问的调度算法就采用了这个策略(若感兴趣,可在这篇文章中搜索关键词"merging"来了解linux的ioscheduler对requestsmerging的优化);

  Blk_read/s:每秒从设备读取的数据大小,在这里,数据量以block为单位来描述。在kernel2.4及之后版本中,block即指扇区(sector),因此,1block=512bytes;在kernel2.4之前的版本中,block的大小不确定;

  Blk_wrtn/s:每秒向设备写入的数据大小,数据大小同样用block来描述;

  Blk_read:系统上电以来,从设备读取的数据总数(单位:block);

  Blk_wrtn:系统上电以来,向设备写入的数据总数(单位:block)。

  iostat-d-k或iostat-c是什么

  iostat不加任何参数时,默认输出avg-cpu及device两种统计数据。若我们只关心device的统计数据,可以用-d来显式指明只输出device相关的统计。另外,device的统计数据默认单位是block(=512Kbytes),我们可以用-k来指定输出的统计数据值以kilobytes为单位。

  例如,在shell终端输入iostat-d-k后,输出格式如下所示:

  [plain]

  Linux2.6.9xenu_7-0-0-0(demo-hostname)06/29/2013

  Device:tpskB_read/skB_wrtn/skB_readkB_wrtn

  sda11.290.516.16578957769260268

  sda20.000.000.001480

  sda311.2367.20187.497554944612107939224

  可以看到,与默认输出格式相比,此次输出内容有4个字段名及数值均有所变化:字段名从Blk_xxx变为kB_xxx(表明这些字段的单位从block变为kB),数值也大概变为原来的512倍。

  若我们只关心avg-cpu的统计数据,则可以通过iostat-c来显式指定。

  3.iostat其它用法

  1)iostatintervalcount

  iostat默认是调用一次才输出一次统计结果,在实际使用中,通常会有只调一次,然后自动按某固定时间间隔连续输出n次的需求。此时可借助可选的interval和count参数来达到这个目的(关于这两个参数,可man查看)。例如iostat1100表示每隔1s输出一次,共输出100次

  2)iostat-pdevice|ALL

  当linux主机由多块磁盘,而我们只关心某个或某几个设备的统计数据时,可以通过iostat-psda1[sda2][sdan]来显式指明仅输出指定设备的统计数据。

  iostat-pALL则表明需要输出系统中定义的所有块设备或分区的统计数据,包括从未被用到的那些设备。此时,输出内容可能会出现ram0之类的设备名,它表示ramdisk,想了解的同学可以查看这里https://wiki.archlinux.org/index.php/Ramdisk。

  注:ALL参数只在kernel2.5及以后的版本中有效。

  除上面列出的几种用法外,各种参数还可组合使用,限于篇幅,这里不再展开。想了解的话,在自己机器上试验一下,学习效果会更好。

  以上就是关于“iostat的默认输出是什么?iostat-d-k或iostat-c是什么”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.