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 仅统计可运行任务因资源不足而停滞的时间,更精确地反映“可感知的”资源压力。
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 告警 |