Windows磁盘性能分析原理和方法

简介: 这次我主要给大家介绍一下Windows磁盘性能分析的原理和主要参考指标的一些计算方法。

这次我主要给大家介绍一下Windows磁盘性能分析的原理和主要参考指标的一些计算方法。 希望对大家有一些借鉴意义。

Windows磁盘性能主要依赖于其内核驱动partmgr.sys(partition manager)。该驱动在整个存储设备堆栈中处于中间位置,在Disk Class Driver (disk.sys)和文件系统驱动中间。如下图:

image

这意味着每个发向磁盘的IO (在Windows系统中又IRP代表),都会经过partmgr.sys。那么该驱动也就有机会记录很多关于磁盘的统计信息。

举个例子,当某个IO发向磁盘之后,经过partmgr.sys的时候驱动就会记录该IO的一些信息,比如经过的时间。而当IO完成的时候,最后会调用partmgr.sys的completion routine,该驱动也就有机会记录IO完成的时间,两者相减就可以得到单个IO的处理时间,对大量IO来说就可以得出统计意义上的平均数据 - Disk sec/Transfer。

再举个例子,对于单个IO,当经过partmgr.sys的时候,驱动就会对其内部计数器加1,当IO完成的时间内部计数器就会减1。那么在平时我们就可以从该计数器得知一共有多少IO尚未完成,平均以后就得到了性能监视器中的平均队列长度 - Avg. Disk Queue Length。

那么我们再来谈一谈所有性能监视器(perfmon)中那些关于磁盘的计数器对象,究竟那些指标代表了磁盘性能:

Disk Bytes/sec

该计数器代表了磁盘的吞吐量,也就是每秒钟有多少字节读写磁盘。他其实取决于两个方面:

从应用或者系统层面产生了多少IO压力。
磁盘性能。
也就是说如果应用或者系统层面没有对磁盘产生压力,它的数值也不会上升。即使它的数值很高,也很有可能是因为应用产生了大量的IO,而不能因此判断磁盘的性能存在问题。

% Idle Time

该技术器代表了磁盘的空闲程度,我们之前提到内部计数器来跟踪磁盘有多少未完成的IO,当该数值为非0时,性能监视器就认为磁盘的繁忙的。为0时,自然就认为磁盘是空闲的。但是即使磁盘一直有未能完成的IO,磁盘依然有可能及时地完成每一个IO,这样也就谈不上磁盘的性能问题。

Avg. Disk Queue Length

这个数值也就是从我们之前提到的内部计数器得来的,试想这样一种情况,磁盘的IO压力很大,如果我们的内部计数器数值很高,也就代表没有完成的IO很多,但是磁盘能够快速地完成每一个IO,这种情况我们能否认为磁盘性能是有问题的?答案是不能,如果磁盘能够快速地完成每一个IO,自然磁盘性能是正常的。

Disk sec/Transfer

根据我们之前的所有分析,这个数值是真正代表磁盘性能的。说如果该数值很高(一般超过50ms),那么应用会很明显地感受每一个交给磁盘的IO回复得很慢,也就会导致应用产生性能问题。

目录
相关文章
|
1月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
204 4
|
15天前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
26 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
20天前
|
监控 PyTorch 数据处理
通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析
在 PyTorch 中,`pin_memory` 是一个重要的设置,可以显著提高 CPU 与 GPU 之间的数据传输速度。当 `pin_memory=True` 时,数据会被固定在 CPU 的 RAM 中,从而加快传输到 GPU 的速度。这对于处理大规模数据集、实时推理和多 GPU 训练等任务尤为重要。本文详细探讨了 `pin_memory` 的作用、工作原理及最佳实践,帮助你优化数据加载和传输,提升模型性能。
51 4
通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析
|
1月前
|
Web App开发 Windows
Windows 记录一次磁盘相关的PC卡顿问题
【10月更文挑战第26天】本文记录了一次Windows系统中因磁盘问题导致的PC卡顿现象及其解决过程。通过查看任务管理器发现磁盘使用率高,经磁盘碎片整理、优化启动项与后台程序、更新磁盘驱动等步骤,最终解决了卡顿问题。建议定期进行磁盘维护,合理管理启动项,及时更新驱动以预防类似问题。
|
1月前
|
存储 Windows
Windows 记录一次磁盘相关的PC卡顿问题
【10月更文挑战第25天】本文记录了一次 Windows 10 电脑卡顿问题的排查与解决过程。通过资源监视器、事件查看器、SMART 信息检查、磁盘扫描、后台程序排查、驱动更新等步骤,最终通过磁盘碎片整理和调整虚拟内存设置解决了卡顿问题。文章还提供了定期磁盘维护、合理设置虚拟内存及关注硬件健康的预防措施。
|
1月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
1月前
|
SQL 监控 数据库
SQL语句性能分析技巧与方法
在数据库管理中,分析SQL语句的性能是优化数据库查询、提升系统响应速度的重要步骤
|
1月前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法
|
1月前
|
安全 Windows
Windows系统实现exe服务注册的方法都有哪些?
【10月更文挑战第5天】Windows系统实现exe服务注册的方法都有哪些?
308 0
|
1月前
|
API Windows
Windows之窗口原理
这篇文章主要介绍了Windows窗口原理和如何使用Windows API创建和管理窗口。
55 0