博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Windows中监视IO性能
阅读量:6163 次
发布时间:2019-06-21

本文共 2020 字,大约阅读时间需要 6 分钟。

附:在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


转载地址:http://fhhfa.baihongyu.com/

你可能感兴趣的文章
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>