/ Performance,Windows / 193浏览

性能监视器的计数器解析(二)- 物理磁盘

引入

在做性能分析的时候,Windows 中自带的 Performance Monitor 非常有效,可以用来分析一些非常复杂的性能问题。
PhysicalDisk counter iamge
其他计数器解析:

物理磁盘相关计数器

计数器名称 含义 用法 补充说明
\PhysicalDisk\Current Disk Queue Length 当前等待磁盘 I/O 请求的队列长度,即队列中尚未完成的磁盘 I/O 请求数。 反映磁盘繁忙程度和 I/O 请求堆积情况。如果值持续过高,表明磁盘成为系统瓶颈。 通常和 Avg. Disk Queue Length、% Disk Time 等其他指标配合使用,以便精确判断磁盘是否存在性能瓶颈。
\PhysicalDisk\% Disk Time 磁盘处于活动状态的百分比,表示磁盘花费在读写操作上的时间占比。 用于判断磁盘是否处于高负载状态。当该值接近 100% 时,说明磁盘在大部分时间里都在处理请求,可能存在磁盘瓶颈。 当磁盘使用了多队列或多核环境下,其准确度可能受影响,最好结合 Avg. Disk Queue Length 一起分析。
\PhysicalDisk\Avg. Disk Queue Length 平均磁盘队列长度,表示磁盘在收集间隔内平均积压的 I/O 请求数。 用于衡量磁盘负载。当该值长期大于磁盘可支持的队列数时,说明磁盘 I/O 压力大,需考虑优化或升级硬件。 需要结合磁盘类型(如 HDD/SSD)和具体应用场景来评估合理范围。
\PhysicalDisk\% Disk Read Time 磁盘处于读操作状态的时间占比。 用于评估读操作在整体磁盘活动中所占的比重。如果该值高,说明当前主要的负载是读请求。 可以与 % Disk Write Time 对比,来区分读写负载分布。
\PhysicalDisk\Avg. Disk Read Queue Length 平均磁盘读队列长度,表示磁盘在收集间隔内平均等待进行的读操作请求数。 当该值过大时,表明磁盘正在等待大量读取请求,可能导致读取延迟较高。 需要结合磁盘的读速率与应用对读性能的需求进行判断。
\PhysicalDisk\% Disk Write Time 磁盘处于写操作状态的时间占比。 用于评估写操作在整体磁盘活动中所占的比重。如果该值高,说明当前主要负载是写请求。 与 % Disk Read Time 对比,可以帮助了解系统主要在执行读还是写操作,从而进行针对性的优化(如调整读/写缓存策略)。
\PhysicalDisk\Avg. Disk Write Queue Length 平均磁盘写队列长度,表示磁盘在收集间隔内平均等待进行的写操作请求数。 当该值过大时,表明磁盘正在等待大量写入请求,可能导致写入延迟较高。 与磁盘类型和写缓存机制有较大关联,某些 SSD 在写入性能上更好,但也需要配合其他指标一同分析。
\PhysicalDisk\Avg. Disk sec/Transfer 每次传输(读或写)平均所需的秒数。 测量磁盘整体响应能力,值越小表示磁盘响应越快。 如果该值持续升高,通常意味着磁盘出现较大的延迟,可能是因为队列过长或磁盘本身存在故障。
\PhysicalDisk\Avg. Disk sec/Read 每次读操作平均所需的秒数。 测量磁盘读操作的响应能力,值越小表示读操作越快。 若出现持续上升,可能说明磁盘读性能下降或读队列较长。
\PhysicalDisk\Avg. Disk sec/Write 每次写操作平均所需的秒数。 测量磁盘写操作的响应能力,值越小表示写操作越快。 若出现持续上升,可能说明磁盘写性能下降或存在写缓冲瓶颈。
\PhysicalDisk\Disk Transfers/sec 每秒执行的磁盘传输(读写总和)次数。 反映磁盘 I/O 吞吐量的一个重要指标,可用来判断应用程序的读写需求是否超出磁盘能力。 与应用负载模式密切相关。通常在数据库或高 I/O 的场景下非常关键。
\PhysicalDisk\Disk Reads/sec 每秒执行的磁盘读操作次数。 反映系统在一段时间内的读需求量,可用来识别读密集型应用或操作。 与 Disk Writes/sec 对比可以帮助定位系统是读密集还是写密集。
\PhysicalDisk\Disk Writes/sec 每秒执行的磁盘写操作次数。 反映系统在一段时间内的写需求量,可用来识别写密集型应用或操作。 建议结合磁盘类型、I/O 模式以及缓存策略来评估写操作的影响。
\PhysicalDisk\Disk Bytes/sec 每秒执行的读写字节总数。 反映磁盘每秒传输的数据量(读写合计),用来衡量磁盘带宽使用情况。 与网络带宽以及系统总数据吞吐需求相关,可用于评估整体 I/O 流量和带宽。
\PhysicalDisk\Disk Read Bytes/sec 每秒读取的字节数。 评估磁盘读操作的吞吐量,判断是否存在读带宽不足的问题。 结合 Avg. Disk Bytes/Read 可以分析每次读请求的平均大小。
\PhysicalDisk\Disk Write Bytes/sec 每秒写入的字节数。 评估磁盘写操作的吞吐量,判断是否存在写带宽不足的问题。 结合 Avg. Disk Bytes/Write 可以分析每次写请求的平均大小。
\PhysicalDisk\Avg. Disk Bytes/Transfer 每次传输(读或写)的平均字节数。 反映一次 I/O 操作中平均传输的数据大小。可与磁盘块大小或应用访问模式对比,判断是否为小块随机 I/O 还是大块顺序 I/O。 当该值过大或过小时,都可能暗示应用和磁盘之间的 I/O 模式需要优化,比如调整文件系统或应用的数据块大小。
\PhysicalDisk\Avg. Disk Bytes/Read 每次读操作的平均字节数。 主要用于分析读取模式,如果值较大,可能是顺序读居多;如果值较小,可能是随机读或小块访问居多。 与应用访问模式和文件系统的配置关系紧密。
\PhysicalDisk\Avg. Disk Bytes/Write 每次写操作的平均字节数。 主要用于分析写入模式,如果值较大,可能是顺序写居多;如果值较小,可能是随机写或小块写居多。 一些场景下配合写缓冲策略可以改善写操作效率。
\PhysicalDisk\% Idle Time 磁盘空闲时间占比,表示磁盘没有处理任何读写请求的时间比率。 当 % Idle Time 和 % Disk Time 相互印证时,可更准确判断磁盘利用率。如果 % Idle Time 高,说明磁盘整体较闲;反之则说明磁盘繁忙。 该指标在多核、多队列、RAID 或虚拟化环境中可能出现一定程度的误差,建议结合其他指标进行分析。
\PhysicalDisk\Split IO/Sec 磁盘分裂 I/O 的次数。一次原本的 I/O 请求在到达驱动层或磁盘层时,因对齐或其它原因被拆分成多个更小的 I/O 请求,即 Split IO。 如果值过高,意味着大量 I/O 被拆分,可能影响整体 I/O 性能。可尝试调整文件系统对齐、分区对齐或优化数据结构来降低 Split IO。 常见于磁盘分区未对齐或文件系统分配策略不合理时。可结合 Avg. Disk Bytes/Transfer、磁盘分区信息进行分析。

补充说明

  1. 结合多个指标进行分析

    • 单独一个指标可能不足以准确判断磁盘是否是系统的瓶颈,通常需要结合 磁盘队列长度(如 Current/Avg. Disk Queue Length)、磁盘使用率(如 % Disk Time、% Idle Time)以及 吞吐量(如 Disk Transfers/sec、Disk Bytes/sec)等多个指标来综合分析。
  2. 不同磁盘类型的差异

    • 对于传统机械硬盘(HDD)和固态硬盘(SSD),同一个指标的参考范围和瓶颈判断标准会有所不同。一般情况下,SSD 具备更好的随机读写性能和更低的平均响应时间。
  3. 系统和应用层面的影响

    • 某些操作系统、文件系统以及应用本身会对磁盘 I/O 进行缓存和优化,例如写缓冲、预读等机制。此时,原始计数器值可能会与实际应用层感知到的性能存在差异,需要结合应用日志或其他高级监控手段来做进一步排查。
  4. 性能测试和基准对比

    • 建议结合一致的基准测试场景(如 Iometer、FIO 等测试工具),获取磁盘的理想性能指标,再与实际生产环境下的监控数据进行对比,找出性能差距并持续优化。
  5. 持续监控与告警

    • 最好利用长期监控工具(如 PerfMon、Prometheus、Grafana 等)并设置合理的警戒阈值,出现异常时及时告警。这样更易于快速定位问题,避免磁盘性能瓶颈对业务造成严重影响。
Windows是如何区分互联网下载文件和本地文件的
Windows是如何区分互联网下载文件和本地文件的
如何低成本的获取到应用卡顿情况
如何低成本的获取到应用卡顿情况
【译】ETW 堆跟踪 – 每个分配都被记录
【译】ETW 堆跟踪 – 每个分配都被记录
【译】Wait Analysis – 寻找空闲时间
【译】Wait Analysis – 寻找空闲时间
如何通过 ETW Provider 来记录应用日志
如何通过 ETW Provider 来记录应用日志
如何通过 C++ 实时监听 ETW 事件
如何通过 C++ 实时监听 ETW 事件

1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注