使用Windows性能监视器(perfmon)记录Avg. Disk Sec/Read、Write、Transfer及Queue Length四项计数器,可可靠诊断磁盘I/O延迟瓶颈;SSD应2即存在瓶颈。
直接用 windows 自带的性能监视器(perfmon)记录并分析磁盘 i/o 延迟,是最可靠、无需安装第三方工具的方法。关键不是看瞬时速度,而是抓取稳定、可比对的延迟指标。
重点关注的性能计数器
在“物理磁盘”(PhysicalDisk)对象下,必须添加以下四项:
- Avg. Disk Sec/Read:每次读操作平均耗时(毫秒)
- Avg. Disk Sec/Write:每次写操作平均耗时(毫秒)
- Avg. Disk Sec/Transfer:读+写综合平均延迟(毫秒)
- Avg. Disk Queue Length:等待处理的 I/O 请求平均数量
正常 SSD 场景下,前三项通常应低于 5ms;HDD 场景下建议不超过 15ms。若持续高于 20ms,且队列长度长期大于 2,说明存在明显 I/O 延迟瓶颈。
创建长期性能日志(Data Collector Set)
手动点击添加计数器只能看实时值,要诊断间歇性延迟,必须保存历史数据:
- 运行
perfmon.msc→ 左侧展开“数据收集器集” → 右键“用户定义” → “新建” → “数据收集器集” - 选择“创建手动数据收集器集”,命名后勾选“性能计数器”
- 添加上述 4 个关键计数器,实例选“_Total”或具体磁盘(如“0 C:”)
- 设置采样间隔为 5–15 秒,日志格式选“二进制(.blg)”,路径设为非系统盘
- 启动后日志自动运行,支持后台持续采集数天
从日志中定位延迟问题
日志生成后,双击 .blg 文件即可在 perfmon 中回放分析:
- 把 Avg. Disk Sec/Transfer 曲线拉到最上方,观察峰值是否集中出现在某类操作时段(如夜间备份、数据库导入)
- 叠加 % Disk Time 和 Avg. Disk Queue Length,确认高延迟是否伴随高占用或长队列
- 导出为 CSV 后,可用 Excel 筛选“Sec/Transfer > 15”,快速统计超标次数和持续时间
- 若发现延迟与某个进程强相关,再回到资源监视器(resmon.exe)→ “磁盘”页签,按“响应时间”排序查源头
辅助验证手段
性能日志是客观依据,但需结合其他信号交叉印证:
- 检查系统事件查看器 → Windows 日志 → 系统,筛选 ID 129(storport)、ID 7(disk)、ID 153(nvme)等硬件级错误
- 运行
winsat disk -drive C获取基准吞吐与延迟值,对比日志中的实测波动范围 - SQL Server 用户可同步查
sys.dm_io_virtual_file_stats,看io_stall_read_ms / num_of_reads是否匹配 perfmon 数值











