zoukankan      html  css  js  c++  java
  • iostat和iotop

    一、iostat

    # iostat
    Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     2020年10月10日     _x86_64_    (3 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.08    0.00    0.19    0.12    0.00   99.61
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sdb               0.01         0.38         0.00       5188          0
    sda               0.94        28.69         2.84     387369      38280
    scd0              0.00         0.08         0.00       1028          0
    dm-0              0.85        26.32         1.69     355363      22788
    dm-1              0.01         0.16         0.00       2204          0
    

    avg-cpu段:

    %user: 在用户级别运行所使用的CPU的百分比.
    %nice: nice操作所使用的CPU的百分比.
    %system: 在系统级别(kernel)运行所使用CPU的百分比.
    %iowait: CPU等待硬件I/O时,所占用CPU百分比.
    %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比
    %idle: CPU空闲时间的百分比.
    

    Device段

    tps: 每秒钟发送到的I/O请求数.
    Blk_read /s:  每秒读取的block数.
    Blk_wrtn/s:  每秒写入的block数.
    Blk_read:   读入的block总数.
    Blk_wrtn:   写入的block总数.
    

    组合参数说明

    Blk_read:读入块的当总数.
    Blk_wrtn:写入块的总数.
    kB_read/s:每秒从驱动器读入的数据量,单位为K.
    kB_wrtn/s:每秒向驱动器写入的数据量,单位为K.
    kB_read:读入的数据总量,单位为K.
    kB_wrtn:写入的数据总量,单位为K.
    rrqm/s:将读入请求合并后,每秒发送到设备的读入请求数.
    wrqm/s:将写入请求合并后,每秒发送到设备的写入请求数.
    r/s:每秒发送到设备的读入请求数.
    w/s:每秒发送到设备的写入请求数.
    rsec/s:每秒从设备读入的扇区数.
    wsec/s:每秒向设备写入的扇区数.
    rkB/s:每秒从设备读入的数据量,单位为K.
    wkB/s:每秒向设备写入的数据量,单位为K.
    avgrq-sz:发送到设备的请求的平均大小,单位是扇区.
    avgqu-sz:发送到设备的请求的平均队列长度.
    await:I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒.
    svctm:发送到设备的I/O请求的平均执行时间.单位是毫秒.
    %util:在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.
    

    iostat -d 2 6

    Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     2020年10月10日     _x86_64_    (3 CPU)
     
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.06    0.00    0.16    0.08    0.00   99.70
     
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    sdb               0.00     0.00    0.01    0.00     0.27     0.00    72.06     0.00    1.64    1.64    0.00   1.13   0.00
    sda               0.00     0.01    0.51    0.17    20.07     2.16    65.53     0.01   10.68   13.83    1.03   3.66   0.25
    scd0              0.00     0.00    0.00    0.00     0.05     0.00   114.22     0.00   21.06   21.06    0.00  20.72   0.00
    dm-0              0.00     0.00    0.45    0.18    18.41     1.36    63.48     0.01   11.41   15.56    1.01   3.95   0.25
    dm-1              0.00     0.00    0.00    0.00     0.11     0.00    50.09     0.00    0.16    0.16    0.00   0.09   0.00
    1. r/s, w/s, rkB/s, wkB/s:这些表示设备上每秒钟的读写次数和读写的字节数(单位是k字节)。这些可以看出设备的负载情况。性能问题可能就是简单的因为大量的文件加载请求。

    2. await:I/O 等待的平均时间(单位是毫秒)。这是应用程序所等待的时间,包含了等待队列中的时间和被调度服务的时间。过大的平均等待时间就预示着设备超负荷了或者说设备有问题了。

    3. avgqu-sz:设备上请求的平均数。数值大于 1 可能表示设备饱和了(虽然设备通常都是可以支持并行请求的,特别是在背后挂了多个磁盘的虚拟设备)。

    4. %util:设备利用率。是使用率的百分数,展示每秒钟设备工作的时间。这个数值大于 60% 则会导致性能很低(可以在 await 中看),当然这也取决于设备特点。这个数值接近 100% 则表示设备饱和了。

    每隔2秒显示一次sda及上面所有分区的统计信息,共输出6次.

    iostat -p sda 2 6<br>
    Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     2020年10月10日     _x86_64_    (3 CPU)
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.06    0.00    0.16    0.08    0.00   99.71
     
    Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
    sda               0.67        19.74         2.14     387369      41916
    sda1              0.06         1.33         0.79      26138      15491
    sda2              0.60        18.28         1.35     358655      26424
    

    显示块设备的扩展信息,以k为单位,每1秒刷新一次,总刷新10次

    # iostat -d -k -x 1 10
    Linux 3.10.0-957.el7.x86_64 (localhost.localdomain)     2020年10月10日     _x86_64_    (3 CPU)
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.00  9915.00    1.00   90.00     4.00 34360.00   755.25    11.79  120.57   6.33  57.6
    

    对于以上示例输出,我们可以获取到以下信息:

    每秒向磁盘上写30M左右数据(wkB/s值)
    每秒有91次IO操作(r/s+w/s),其中以写操作为主体
    平均每次IO请求等待处理的时间为120.57毫秒,处理耗时为6.33毫秒
    等待处理的IO请求队列中,平均有11.79个请求驻留
    

    以上各值之间也存在联系,我们可以由一些值计算出其他数值,例如:

    util = (r/s+w/s) * (svctm/1000)

    对于上面的例子有:util = (1+90)*(6.33/1000) = 0.57603

    指定查看sda的TPS和吞吐量信息(磁盘读写速度单位为MB),每间隔2秒刷新一次

    iostat -d -m 2 |grep sda
      Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
      sda               0.19         0.00         0.07        230      12004
      sda             368.00         0.00       184.00          0        368
      sda             373.00         0.00       186.25          0        372
      sda             351.00         0.00       175.50          0        351
      sda             345.50         0.00       172.75          0        345
      sda             362.50         0.00       181.00          0        362
      sda             375.00         0.00       187.39          0        374
      sda             369.00         0.00       184.36          0        368
    

     

  • 相关阅读:
    ecos启动流程分析
    ecos中断机制分析(2)
    Redboot修改实例
    6/6 项目开工
    6/8 可配置工作流 实现思路
    6/7 第2次碰头
    6/10 主要流程和界面讨论会确定
    6/10 设计方案目录草案
    C# 获取某月的第一天和最后一天
    【Manage It】之掌控项目
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/14175801.html
Copyright © 2011-2022 走看看