3. 性能指标与监控体系总览

在存储性能监控中,最容易被误用的做法是“只看一个数字”。IOPS 高不代表业务快,带宽大不代表时延低,时延低也不代表系统还有余量。真正有效的诊断,是把一组指标放在同一条 I/O 路径上理解:请求从主机发出,经过前端接口、缓存、后端介质,最终返回主机。每个环节都有自己的能力上限和排队行为,指标就是这些环节的“体检数据”。

一、四个基础指标:IOPS、带宽、时延、队列深度

IOPS(Input/Output Operations Per Second)表示每秒完成的 I/O 操作次数,关注的是“次数”。它天然与 I/O 大小强相关:4 KiB 随机读和 256 KiB 顺序写,同样 10 万 IOPS,对后端压力完全不同。因此看 IOPS 必须同时看块大小和读写比例,否则数字没有意义。

带宽(Throughput/Bandwidth)表示每秒传输的数据量,常用 MB/s 或 GB/s,关注的是“字节数”。带宽 = IOPS × 平均 I/O 大小。这个关系是排查中的关键换算:当带宽打满而 IOPS 不高时,通常是大块顺序访问;当 IOPS 很高而带宽不高时,通常是小块随机访问。

时延(Latency)表示一个 I/O 从发出到完成所经历的时间,单位常用毫秒(ms)或微秒(µs)。时延是最贴近业务体验的指标。业界常把平均时延和尾时延分开看:平均值会被大量快 I/O 拉低,而 P99、P999 尾时延才反映最慢的那部分请求。一个阵列平均 0.5 ms、P99 却到 20 ms,业务侧仍会感到卡顿。

队列深度(Queue Depth)表示在某一时刻尚未完成的 I/O 数量。它和时延通过利特尔法则(Little's Law)关联:队列深度 ≈ IOPS × 时延。例如某卷实测 20000 IOPS、平均时延 1 ms,则平均在途 I/O 约为 20000 × 0.001 = 20。队列深度是“压力表”:队列开始持续增长,说明到达速率已接近或超过处理能力,时延即将抬升。

判断瓶颈时,先看时延是否抬升,再看队列深度是否堆积,最后用 IOPS 与带宽的换算判断负载类型。三者顺序颠倒,很容易把“大块顺序写”误判为“随机小 I/O 瓶颈”。

二、缓存命中率与读写放大

缓存命中率(Cache Hit Rate)表示读请求在缓存中直接得到响应的比例。命中率高,读时延低、后端压力小;命中率骤降,往往意味着工作集变大、访问模式变随机,或缓存被大量写入挤占。需要注意,写缓存与读缓存行为不同:写通常先落入缓存并异步下刷,因此“写命中”更多影响的是写时延和后续下刷压力,而不是简单的命中率数字。

读写放大(Read/Write Amplification)是另一个容易被忽略的指标。写放大 = 实际写入介质的量 / 主机请求写入量。它受块大小、对齐、RAID/纠删码、垃圾回收影响。写放大升高会直接消耗后端带宽和寿命,表现为“主机侧写入不高,但后端很忙”。

三、Pure Storage 特有指标

Pure Storage 基于全闪存与 Purity 操作系统,除通用指标外,还有几类特有视角值得纳入监控体系:

  • Purity 版本与阵列级健康:通过 Pure1 或阵列 GUI 查看整体状态、组件健康、容量与性能趋势,是判断“是单卷问题还是整阵列问题”的第一层。
  • 卷级与主机级性能视图:Pure 支持按卷、按主机、按快照粒度查看 IOPS、带宽、时延,便于把业务对象与性能数据对齐。
  • FlashArray 的 NVRAM/写缓存与下刷:写入先进入 NVRAM 再落盘,写时延与下刷队列相关,观察写路径时要关注这一层。
  • Pure1 的 AI 驱动分析与 Workload Planner:提供性能基线、异常检测和容量/性能预测,适合做趋势判断而非瞬时排障。
  • ActiveCluster / ActiveDR 复制指标:双活或复制场景下,复制时延、复制带宽和链路状态会直接影响主站写时延,必须单独监控。
  • SafeMode 快照与保护组:快照频率过高会带来额外的元数据与下刷压力,属于 Pure 特有的“保护换性能”权衡点。

四、把指标串成一条监控链

下面这张图把主机、前端、缓存、后端介质和 Pure 特有监控点放在同一条 I/O 路径上,帮助建立“指标—环节—瓶颈”的对应关系。

I/O 路径上的性能指标与 Pure Storage 监控点 主机 / 应用 发起 I/O 块大小 / 读写比 队列深度(HBA) 前端接口 FC / iSCSI / NVMe 端口 IOPS / 带宽 主机级时延 缓存 / NVRAM 读命中率 写缓存下刷队列 写时延 后端全闪介质 后端 IOPS / 带宽 读写放大 垃圾回收压力 返回路径:端到端时延 = 各环节时延之和 + 排队时延 核心关系 带宽 = IOPS × 平均 I/O 大小 队列深度 ≈ IOPS × 时延(利特尔法则) 写放大 = 介质写入量 / 主机写入量 判断顺序:时延是否抬升 → 队列是否堆积 → 用 IOPS/带宽换算确认负载类型 Pure Storage 特有监控点 Pure1 AI 分析 / Workload Planner · 卷级与主机级性能视图 · NVRAM 写缓存与下刷 ActiveCluster / ActiveDR 复制时延与带宽 · SafeMode 快照与保护组开销 · Purity 版本与阵列健康

五、监控体系怎么落地

把上述指标组织成可用的监控体系,建议分三层:阵列层看整体健康、容量、Purity 版本和 Pure1 趋势;对象层按卷、主机、快照、保护组看 IOPS、带宽、时延;路径层看前端端口、NVRAM 下刷、后端介质和复制链路。三层对齐后,才能回答“是哪个卷、哪条路径、哪个环节慢”。

一个可参考的采集与判断示例(参数为教学假设,非实测):某数据库卷在业务高峰出现响应变慢。先看卷级时延从 0.8 ms 升到 4.5 ms,P99 从 3 ms 升到 28 ms;再看队列深度从 12 升到 90;IOPS 约 20000、平均 I/O 8 KiB,换算带宽约 160 MB/s。此时队列深度 ≈ 20000 × 0.0045 = 90,与观测一致,说明到达速率已超过处理能力。进一步看缓存命中率从 92% 降到 61%,后端读 IOPS 明显上升,判断为工作集扩大导致缓存失效、后端读压力增大。处理方向是确认是否有全表扫描或批量任务,必要时调整缓存策略或错峰。

不要把 Pure1 的趋势预测当作实时排障工具,也不要用单点瞬时值下结论。性能诊断至少要看 5~15 分钟窗口,并同时保留平均值与尾时延。

最后强调一个原则:指标是“关系”,不是“排名”。IOPS、带宽、时延、队列深度、缓存命中率、读写放大以及 Pure 特有监控点,只有放在同一条 I/O 路径和同一个时间窗口里,才能从数字变成判断依据。