zoukankan      html  css  js  c++  java
  • 在Windows中监视IO性能

    附:在Windows中监视IO性能

    本来准备写一篇windows中监视IO性能的,后来发现好像可写的内容不多,windows在细节这方面做的不是那么的好,不过那些基本信息还是有的。

    在Windows中监视性能基本都用性能监视器了,与IO性能相关的有两个大类,一个是”LogicalDisk”,另外一个是”PhysicalDisk”,”LogicalDisk”更多的是用来监视文件相关的IO性能,而”PhysicalDisk”则是用来监视LUN或者是磁盘卷,下面就列举下与前面所列举的IO性能相关的计数器,具体的自己研究了:

    单次IO大小
    • Avg. Disk Bytes/Read
    • Avg. Disk Bytes/Write
    IO响应时间
    • Avg. Disk sec/Read
    • Avg. Disk sec/Write
    IOPS
    • Disk Reads/sec
    • Disk Writes/sec
    • Disk Transfers/sec
    IO吞吐率
    • Disk Bytes/sec
    • Disk Read Bytes/sec
    • Disk Write Bytes/sec

    绿色通道: 好文要顶 关注我 收藏该文与我联系

    理解iostat的各项输出

      在Linux中,我们执行一个iostat -x命令,我们能看到如下的输出

      $iostat -x
      Linux 2.4.21-50a6smp (linux) 11/03/2009
      avg-cpu: %user %nice %sys %iowait %idle
      0.42 0.00 0.26 0.47 98.86
      Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
      hdc 0.01 0.00 0.00 0.00 0.07 0.00 0.03 0.00 24.48 0.00 4.90 4.57 0.00
      hda 0.89 8.54 0.74 4.49 12.60 104.22 6.30 52.11 22.32 0.03 5.41 1.01 0.53

      我们先列举一下各个性能指标的简单说明。

      rrqm/s:每秒进行merge的读操作数目。
      
    wrqm/s:
    每秒进行merge的写操作数目。
      
    r/s:
    每秒完成的读I/O设备次数。
      
    w/s:
    每秒完成的写I/O设备次数。
      
    rsec/s:
    每秒读扇区数。
      
    wsec/s:
    每秒写扇区数。
      
    rkB/s:
    每秒读K字节数。
      
    wkB/s:
    每秒写K字节数。
      
    avgrq-sz:
    平均每次设备I/O操作的数据大小(扇区)。
      
    avgqu-sz:
    平均I/O队列长度。
      
    await:
    平均每次设备I/O操作的等待时间(毫秒)。
      
    svctm:
    平均每次设备I/O操作的服务时间(毫秒)。
      
    %util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的。

      要理解这些性能指标我们先看下图

    理解iostat的各项输出
    IO的执行过程的各个参数

      上图的左边是iostat显示的各个性能指标,每个性能指标都会显示在一条虚线之上,这表明这个性能指标是从虚线之上的那个读写阶段开始计量的,比如说图中的w/s从Linux IO scheduler开始穿过硬盘控制器(CCIS/3ware),这就表明w/s统计的是每秒钟从Linux IO scheduler通过硬盘控制器的写IO的数量。

      结合上图对读IO操作的过程做一个说明,在从OS Buffer Cache传入到OS Kernel(Linux IO scheduler)的读IO操作的个数实际上是rrqm/s+r/s,直到读IO请求到达OS Kernel层之后,有每秒钟有rrqm/s个读IO操作被合并,最终转送给磁盘控制器的每秒钟读IO的个数为r/w;在进入到操作系统的设备层(/dev/sda)之后,计数器开始对IO操作进行计时,最终的计算结果表现是await,这个值就是我们要的IO响应时间了;svctm是在IO操作进入到磁盘控制器之后直到磁盘控制器返回结果所花费的时间,这是一个实际IO操作所花的时间,当await与svctm相差很大的时候,我们就要注意磁盘的IO性能了;而avgrq-sz是从OS Kernel往下传递请求时单个IO的大小,avgqu-sz则是在OS Kernel中IO请求队列的平均大小。

      现在我们可以将iostat输出结果和我们前面讨论的指标挂钩了。

      平均单次IO大小(IO Chunk Size) <=> avgrq-sz
      平均IO响应时间(IO Response Time) <=> 
    await
      IOPS(IO per Second) <=> 
    r/s + w/s
      吞吐率(Throughtput) <=> 
    rkB/s + wkB/s


  • 相关阅读:
    如何手动封装 $ on off emit?
    Vue 实例身上的一些方法(二)
    Vue 实例身上的一些方法(一)
    Vue属性过滤
    Vue属性监听
    Vue实现简单的商品增减功能
    Vue 计算属性
    使用Vue实现一个简单地自定义拖拽功能
    数组的深拷贝与浅拷贝
    如何让html引用公共布局(多个html文件公用一个header.html和footer.html)
  • 原文地址:https://www.cnblogs.com/jjkv3/p/3191507.html
Copyright © 2011-2022 走看看