iostat命令详解

语法:

        iostat [ 选项 ] [<时间间隔> <次数> ]

支持的参数及参数详解:

        -c:仅显示CPU统计信息,与-d选项互斥
        -d:仅显示磁盘统计信息,与-c选项互斥
        -h:使用NFS(Network File System网络文件系统)的输出报告,更加友好可读。需要使用-n参数开启NFS。
        -k:以 kb 为单位显示,默认情况下,iostat的输出是以block作为计量单位,加上这个参数可以以kb作为计量单位显示。(该参数仅在linux内核版本2.4以后数据才是准确的)
        -m:以 mb 为单位显示(该参数仅在linux内核版本2.4以后数据才是准确的)
        -N:显示磁盘阵列(LVM) 信息。
        -V:显示版本信息
        -x:显示更详细的磁盘报告信息,默认只显示六列,加上该参数后会显示更详细的信息(该参数仅在linux内核版本2.4以后数据才是准确的)

        -n:显示NFS(Network File System网络文件系统) 使用情况(该参数仅在linux内核版本2.6.17以后有效)
        -t:输出报告时显示系统时间
        -p:[ { device [,…] | ALL } ] 显示磁盘分区的相关统计信息(默认粒度只到磁盘,没有显示具体的逻辑分区)
        -y:跳过不显示第一次报告的数据,因为iostat使用的是采样统计,所以iostat的第一次输出的数据是自系统启动以来的累计的数据(该参数十分重要,第一次统计数据几乎无意义)

        -z:只显示在采样周期内有活动的磁盘
        -j:{ ID | LABEL | PATH | UUID | … } 磁盘列表的Device列要用什么维度来描述磁盘    

命令返回值解读    

iostat命令详解_第1张图片

avg-cpu段:

        %usr CPU在用户模式下的时间百分比
        %nice CPU处在带NICE值的用户模式下的时间百分比(nice:用户态在低优先级花费的cpu时间。可以理解为被降低优先级进程花费的cpu时间:五分钟明白linux中nice值表示什么_linux renice_啊哈??的博客-CSDN博客)
        %system CPU在系统模式下的时间百分比
        %iowait CPU等待输入输出完成时间的百分比
        %steal 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
        %idle CPU空闲时间百分比

Device段:

        tps 该设备每秒的传输次数
        kB_read/s 每秒从设备读取的数据量
        kB_wrtn/s 每秒向设备写入的数据量
        kB_read 读取的总数据量
        kB_wrtn 写入的总数据量

使用-x命令扩展返回值解读:

        iostat命令详解_第2张图片

 avg-cpu段:同上

Device段:

        rrqm/s 每秒合并的读操作次数(当系统调用需要读取数据的时候,VFS(virtual File System)将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge)
        wrqm/s 每秒合并的写操作次数
        r/s 每秒读次数
        w/s 每秒写次数,r/s+w/s就是磁盘IOPS
        rkB/s 每秒读数据量(KB单位)
        wkB/s 每秒写数据量(KB单位),rkB/s+wkB/s就是磁盘吞吐量
        avgrq-sz 平均每次设备I/O操作的 (扇区)数据大小
        avgqu-sz 平均I/O队列长度,即IO等待个数,数值越低越好。
        await 每一个IO请求的处理的平均时间(单位ms)。
        r_await 每个读操作平均所需的时间(单位ms), r_await + w_await 就是磁盘对请求响应时间(不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间)

        w_await 每个写操作平均所需的时间(单位ms)(不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间)
        svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)(如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢)
        %util 在统计时间内所有处理IO时间,除以总共统计时间。

        计算示例:

        例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,
        所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了,注意:当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈

几个常用数据计算:

       IOPS:  I/O per second,即每秒钟可以处理的I/O个数。
随机读写频繁的应用(一般指I/O小于64KB的应用场景),
如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标

        吞吐量:计算方式: rkB/s+wkB/s顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标

日常使用数据观察:

        如果%iowait的值过高,表示硬盘存在I/O瓶颈(具体数值多少是高这个取决于多方面的因素,可以在实践中多次观察系统在空闲情况下的数值和高io操作下的数据做比对得出结论)

        %idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU在等待分配内存,此时应加大内存容量

        如果%idle值持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU

你可能感兴趣的:(linux常用命令,linux)