如何在Windows中监视IO性能

所属分类: 操作系统 / 其它相关 阅读数: 111
收藏 0 赞 0 分享

本来准备写一篇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队列是非空的。

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

windows10彻底关闭自动更新【绝对可行】

这篇文章主要介绍了windows10彻底关闭自动更新【绝对可行】,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Windows 10系统安装虚拟专用网客户端工具(图文教程)

本文通过图文并茂的形式给大家介绍了Windows 10系统安装虚拟专用网客户端工具,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

Windows服务器修改远程桌面默认端口过程图示

这篇文章主要介绍了Windows服务器修改远程桌面默认端口过程图示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Win10专业版激活方法步骤详解

这篇文章主要介绍了Win10专业版激活方法步骤详解,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

深度操作系统 deepin 15.11安装 QGIS 3.4

深度操作系统是基于Linux内核,以桌面应用为主的开源 GNU/Linux 操作系统,支持笔记本、台式机和一体机,这篇文章给大家介绍deepin 15.11安装 QGIS 3.4的方法,需要的朋友参考下吧
收藏 0 赞 0 分享

红帽RedHat 8.0新特性(网络、yum源、Web界面管理等)

这篇文章主要介绍了红帽RedHat 8.0新特性(网络、yum源、Web界面管理等),本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

HarmonyOS鸿蒙实现HelloWorld应用开发E2E体验

这篇文章主要介绍了HarmonyOS实现HelloWorld应用开发E2E体验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

HarmonyOS鸿蒙基本控件的实现

这篇文章主要介绍了HarmonyOS应 基本控件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

鸿蒙HarmonyOS视频播放的实现

这篇文章主要介绍了鸿蒙HarmonyOS视频播放的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

鸿蒙HarmonyOS剪切板的实现

这篇文章主要介绍了鸿蒙HarmonyOS剪切板的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享
查看更多