直接用windows自带性能监视器(perfmon)可追踪服务级i/o行为,需关联physicaldisk吞吐(disk read/write bytes/sec)、队列长度(avg. disk queue length)及延迟(avg. disk sec/read/write),再结合资源监视器(resmon)按“读取/写入字节/秒”排序定位高io服务进程,并用数据收集器集保存历史基线用于回溯分析。
直接用 windows 自带的性能监视器(perfmon)就能追踪服务级 i/o 行为,关键不是只看总量,而是把服务进程、磁盘硬件、请求排队三者关联起来分析。
盯住 PhysicalDisk 的真实吞吐和队列
服务产生的 I/O 最终落在物理磁盘上。LogicalDisk(如 C:)只反映盘符层面读写,而 PhysicalDisk 才体现硬件真实压力。比如 SQL Server 数据库文件全放在 C:,但 C: 和 D: 实际共用一块 NVMe 盘,此时 LogicalDisk 各自数值正常,PhysicalDisk 却可能已满负荷。
- 必须添加 PhysicalDisk\Disk Read Bytes/sec 和 PhysicalDisk\Disk Write Bytes/sec,实例选 _Total 或具体磁盘编号(如 0 C:)
- 同步加上 PhysicalDisk\Avg. Disk Queue Length —— 这个值比吞吐量更能暴露瓶颈
- NVMe 盘持续 > 4、SATA SSD > 2、HDD > 1.5,就说明请求开始积压,响应延迟会上升
定位是哪个服务在刷盘
perfmon 看到高 IO 后,下一步是锁定源头。任务管理器的“I/O 读取字节”“I/O 写入字节”是累计值,不适合实时排查;资源监视器(resmon)才是首选。
- 打开资源监视器 → “磁盘”选项卡 → 按“读取(字节/秒)”或“写入(字节/秒)”降序排列
- 注意“服务”列:svchost.exe 下挂的多个服务会合并显示,可右键 → “转到服务”查看具体服务名
- 常见高 I/O 服务包括:Windows Search、Superfetch(SysMain)、WMI Provider Host、SQL Server 的 sqlservr.exe、以及备份类服务如 WindowsServerBackup
结合 Avg. Disk Sec/Read 和 Sec/Write 判断延迟问题
吞吐高 + 队列长,只是“忙”;如果单次读写耗时也超标,说明磁盘响应变慢,可能是硬件老化、驱动异常或 RAID 重构中。
- PhysicalDisk\Avg. Disk Sec/Read 建议 ≤ 15 ms(SSD)或 ≤ 20 ms(HDD)
- PhysicalDisk\Avg. Disk Sec/Write 建议 ≤ 12 ms(SSD)或 ≤ 25 ms(HDD)
- 若该值突增但队列长度不高,大概率不是负载问题,而是磁盘响应能力下降,需检查 SMART 状态、阵列健康、或是否启用写缓存
用数据收集器集保存历史基线
临时看一眼看不出规律,尤其夜间批处理、定时日志归档等行为容易被忽略。创建长期采集能回溯对比。
- perfmon 左侧 → “数据收集器集” → “用户定义” → 右键新建 → 名称自定(如“服务IO基线”)
- 只勾选“性能计数器”,添加:Disk Read Bytes/sec、Disk Write Bytes/sec、Avg. Disk Queue Length、Avg. Disk Sec/Read、Avg. Disk Sec/Write
- 采样间隔设为 30 秒,日志格式选 BLG,运行后自动记录,双击 .blg 文件即可回放分析











