1. PSI 指标基础:压力-状态-指示器

PSI(Pressure-State-Indicator)是一套源自环境科学、后被引入系统性能监控领域的结构化度量框架。在系统监控语境下,PSI 将复杂的系统健康度拆解为三个可观测、可量化的层次:压力(Pressure)、状态(State) 和 指示器(Indicator)。这种分层模型让运维人员能够从“原因→现状→信号”的因果链中快速定位性能瓶颈。

1.1 三层模型定义

层次 英文 定义 监控示例
压力 Pressure 施加给系统的外部或内部负载强度,是性能退化的根本驱动力 CPU 运行队列长度、磁盘 I/O 并发数、网络入向带宽利用率
状态 State 系统在当前压力下的瞬时健康快照,反映资源是否过载 CPU 使用率、内存占用率、磁盘平均等待时间
指示器 Indicator 由压力与状态共同作用产生的可告警信号,通常带有阈值边界 CPU 软锁检测、OOM Killer 触发次数、磁盘 I/O 超时比例
关键区分:压力是“输入”,状态是“当前值”,指示器是“是否越界”。三者构成一条完整的因果监控链,缺一不可。

1.2 PSI 在系统性能监控中的核心作用

PSI 框架在系统性能监控中承担以下四项核心职能:

  1. 因果解耦 — 将“负载高”与“系统慢”拆开分析,避免将压力直接等同于故障。
  2. 早期预警 — 压力层的变化通常早于状态层恶化,为告警阈值设定提供前置窗口。
  3. 根因定位 — 通过三层数据联动,快速区分是“请求洪峰”(压力)还是“资源泄漏”(状态)导致异常。
  4. 阈值校准 — 指示器阈值不再依赖经验拍脑袋,而是基于压力-状态的统计关系动态设定。
实践案例:某电商大促期间,CPU 使用率(状态)仅 65%,但运行队列长度(压力)已达 12。若只监控状态层,系统会被判定为“健康”;而 PSI 框架会立即触发压力告警,提前 3 分钟扩容,避免后续的请求堆积雪崩。

1.3 PSI 三层关系图

PSI 三层关系图 PSI 三层因果监控模型 压力 (Pressure) 负载强度 · 驱动因素 状态 (State) 健康快照 · 当前值 指示器 (Indicator) 告警信号 · 阈值边界 三层联动逻辑 • 压力升高 → 状态恶化 → 指示器触发告警 • 压力层变化通常早于状态层 30s–120s,是阈值设定的前置窗口 • 指示器阈值应基于压力-状态的统计分布动态校准,而非固定值

1.4 典型 PSI 指标映射表

以下表格列出 Linux 系统中最常见的 PSI 三层指标映射关系,帮助你在实际监控中快速对号入座:

资源域 压力指标 (P) 状态指标 (S) 指示器 (I)
CPU runqueue_depth / load_avg_1m cpu_util_percent / steal_pct cpu_pressure_avg10 > 1.0
内存 page_fault_rate / swap_io_rate mem_util_percent / oom_score memory_pressure_avg10 > 0.5
磁盘 I/O avgqu-sz / await iowait_pct / svctm io_pressure_avg10 > 0.8
网络 backlog_len / retrans_rate bandwidth_util / drop_rate tcp_retrans_seg > 阈值
常见误区:不要将压力指标直接当作告警指示器。例如 runqueue_depth 长期偏高但 CPU 使用率未饱和时,应优先排查调度器或锁竞争,而非直接触发 CPU 告警。PSI 框架要求你始终从三层联动视角做判断。

1.5 PSI 与现有监控体系的融合位置

PSI 并非替代现有监控工具(如 Prometheus、Zabbix、Datadog),而是为它们提供一套更严谨的指标分层逻辑。在架构上,PSI 通常嵌入在以下位置:

  • 采集层 — 通过 /proc/pressure/ 接口或 eBPF 程序获取原始压力数据。
  • 聚合层 — 将压力、状态、指示器分别存入不同的时间序列标签。
  • 告警层 — 指示器阈值不再写死,而是基于压力-状态的历史分布自动计算基线。
PSI 在监控体系中的位置 PSI 在监控体系中的融合位置 采集层 /proc/pressure/ · eBPF 聚合层 P/S/I 分标签存储 告警层 动态基线 · 阈值校准 PSI 不替代现有工具,而是提供指标分层逻辑 Prometheus / Zabbix / Datadog 等工具均可按 P→S→I 三层重新组织告警规则

1.6 本章小结

PSI 指标基础是整门课程的基石。你需要记住三个核心要点:

  • 压力 ≠ 故障 — 压力是负载输入,状态是系统响应,指示器才是告警信号。
  • 三层必须联动 — 单独看任何一层都会导致误告警或漏告警。
  • 阈值设定前置窗口 — 压力层的变化比状态层早 30–120 秒,这是动态阈值校准的关键时间窗。