3. PSI 指标解读:some 与 full 的区别、avg10/avg60/avg300 的含义、total 累计值的作用

在设定 PSI 漂移告警阈值之前,必须准确理解 PSI 指标的三个核心维度:压力类型(some vs full)、时间窗口(avg10/avg60/avg300) 以及 累计统计(total)。这三个维度共同决定了告警的灵敏度与准确性。

3.1 some 与 full:压力类型的本质区别

PSI 将资源压力分为两个级别,分别对应不同的系统行为:

指标 含义 触发条件 典型场景
some 至少有一个任务因资源不足而等待 资源争用开始发生,部分任务进入等待状态 CPU 单核过载、内存少量回收、IO 队列轻度堆积
full 所有可运行任务均因资源不足而等待 资源完全耗尽,系统吞吐量急剧下降 CPU 全部核满载、内存严重不足触发 OOM、IO 设备饱和
关键认知:some 是“开始疼”,full 是“已经瘫痪”。告警阈值设定时,some 用于早期预警,full 用于紧急响应。

以下 SVG 展示了 some 与 full 在系统资源队列中的行为差异:

some vs full 压力类型对比 some 压力 至少一个任务等待 资源轻度争用 系统仍可继续处理 full 压力 所有任务均等待 资源完全耗尽 系统吞吐量归零 告警策略:some 阈值设低(如 10%)用于预警,full 阈值设高(如 50%)用于紧急响应 some 告警频率高但可容忍,full 告警必须立即处理 适用:CPU、内存、IO 轻度争用 适用:CPU、内存、IO 完全饱和

3.2 avg10 / avg60 / avg300:时间窗口的含义

PSI 为每个压力类型提供了三个时间窗口的统计值,分别代表不同时间尺度下的平均压力:

窗口 全称 统计周期 用途
avg10 10 秒滑动平均 最近 10 秒 实时监控、瞬时尖峰检测
avg60 60 秒滑动平均 最近 60 秒 短期趋势、毛刺过滤
avg300 300 秒滑动平均 最近 5 分钟 中长期基线、漂移识别
实践建议:avg10 用于快速告警,avg60 用于确认趋势,avg300 用于基线漂移检测。三个窗口配合使用,可以有效避免误报和漏报。

以下 SVG 展示了三个时间窗口在压力曲线上的作用:

avg10 / avg60 / avg300 时间窗口对比 0s 150s 300s avg10 10秒窗口 avg60 60秒窗口 avg300 300秒窗口 三个窗口的告警特性 avg10:响应最快,但容易受瞬时毛刺影响 → 适合设置较高阈值 avg60:平衡响应速度与稳定性 → 适合作为主要告警依据 avg300:最平滑,反映长期趋势 → 适合漂移检测和容量规划

3.3 total 累计值的作用

total 是 PSI 指标中的累计等待时间(单位:微秒),从系统启动或指标重置开始累加。它不直接用于告警阈值,但具有以下关键作用:

  • 计算平均压力:通过 total 差值除以时间间隔,可以精确计算任意时间段的平均压力。
  • 验证告警准确性:当 avg 指标出现异常时,通过 total 的增量可以确认是否真实发生了压力事件。
  • 长期趋势分析:total 的增长率变化可以反映系统资源压力的长期漂移趋势。
注意:total 值会持续增长,不能直接用于阈值告警。必须通过差分计算(delta total / delta time)转换为压力百分比后使用。

3.4 三个维度的综合应用

在实际告警阈值设定中,需要将三个维度组合使用:

告警场景 压力类型 时间窗口 total 辅助
CPU 瞬时尖峰 some avg10 验证增量
内存持续压力 full avg60 确认趋势
IO 漂移检测 some + full avg300 计算增长率
核心公式:压力百分比 = (total_end - total_start) / (time_end - time_start) × 100%。这是将 total 转换为可用告警指标的基础。