1. PSI 指标概述

1.1 什么是 PSI(Pressure Stall Information)

PSI(Pressure Stall Information)是 Linux 内核 4.20 版本引入的一项资源压力度量机制,由 Facebook 工程师 Johannes Weiner 主导设计。它通过量化任务因等待 CPU、内存或 I/O 资源而停滞的时间比例,直接反映系统资源的 “过载程度”,而非简单的使用率。

传统监控指标(如 CPU 使用率、内存占用率)在资源接近饱和时往往呈现“非线性突变”,而 PSI 能够提前捕捉到资源竞争的 “排队效应”,是压力测试中识别性能瓶颈的早期信号。

核心价值:PSI 衡量的是“任务因资源不足而无法运行的时间占比”,比传统指标更敏感、更贴近真实用户体验。

1.2 PSI 的三大指标

PSI 针对三种关键系统资源分别输出压力数据,每种资源包含两个子指标:some(至少一个任务受阻)和 full(所有任务均受阻)。

资源类型 指标名称 含义 典型场景
CPU cpu.some 至少一个任务因等待 CPU 而停滞的时间占比 高并发计算、线程争抢
Memory memory.some 至少一个任务因等待内存分配(如缺页、回收)而停滞的时间占比 内存泄漏、OOM 边缘、swap 抖动
Memory memory.full 所有可运行任务均因内存不足而停滞的时间占比 严重内存耗尽、系统濒临 OOM
I/O io.some 至少一个任务因等待块设备 I/O 而停滞的时间占比 磁盘吞吐瓶颈、日志刷盘延迟
I/O io.full 所有可运行任务均因 I/O 等待而停滞的时间占比 存储阵列过载、文件系统锁竞争
监控建议:在压力测试中,优先关注 some 指标(更敏感),当 full 指标持续 > 10% 时,通常意味着系统已进入严重过载状态。

1.3 PSI 在压力测试中的重要性

压力测试的核心目标是发现系统在极限负载下的 性能拐点 与 稳定性边界。传统指标(如 CPU 使用率 100%、内存占用 95%)往往在系统已经崩溃或响应急剧恶化时才触发告警,而 PSI 提供了更早的预警窗口:

  • 提前发现资源竞争:当 CPU 使用率仅 70% 时,PSI 的 cpu.some 可能已开始上升,提示存在调度延迟。
  • 区分瓶颈类型:通过对比 cpu.some、memory.some、io.some 的数值,可快速定位瓶颈是计算密集型、内存密集型还是 I/O 密集型。
  • 量化用户体验:PSI 的“停滞时间比例”与请求延迟、吞吐量下降之间存在强相关性,可直接映射到 SLO 违约风险。
  • 避免“假饱和”误判:某些场景下 CPU 使用率虽高但任务并未停滞(如纯计算无等待),PSI 能准确区分“忙碌”与“阻塞”。
常见误区:不要将 PSI 指标与系统负载(Load Average)直接等同。Load Average 包含不可中断睡眠(D 状态)任务,而 PSI 仅统计可运行任务因资源不足而停滞的时间,更精确地反映“可感知的”资源压力。
PSI 三大指标与压力测试关系图 PSI 三大指标在压力测试中的角色 压力测试 持续增加负载 CPU 压力 cpu.some / cpu.full Memory 压力 memory.some / memory.full I/O 压力 io.some / io.full 异常检测 性能拐点识别 瓶颈类型定位 PSI 指标在压力测试中充当“早期预警传感器”,在传统指标尚未告警时即可捕捉到资源竞争导致的性能劣化

1.4 如何获取 PSI 指标

在 Linux 系统中,PSI 数据通过 /proc/pressure/ 伪文件系统暴露,每个资源对应一个文件:

# 查看 CPU 压力
cat /proc/pressure/cpu

# 查看内存压力
cat /proc/pressure/memory

# 查看 I/O 压力
cat /proc/pressure/io

输出格式示例:

some avg10=2.35 avg60=1.78 avg300=0.95 total=123456789
full avg10=0.12 avg60=0.08 avg300=0.03 total=9876543

字段说明:

  • avg10 / avg60 / avg300:最近 10 秒、60 秒、300 秒的滑动平均压力百分比。
  • total:自系统启动以来的累计停滞微秒数。
实战技巧:在压力测试中,建议同时采集 avg10 和 avg60 两个窗口的数据。avg10 对瞬时突发敏感,avg60 更能反映持续压力趋势。

1.5 PSI 与传统监控指标的对比

对比维度 传统指标(CPU%/Mem%/iowait) PSI 指标
测量对象 资源使用率 任务因资源不足的停滞比例
敏感度 仅在接近 100% 时突变 在资源竞争初期即线性上升
瓶颈定位 需结合多指标人工推断 直接区分 CPU/Memory/I/O 三类
与延迟相关性 间接、非线性 直接、近似线性
适用场景 容量规划、长期监控 压力测试、异常检测、SLO 告警