2. PSI指标解读:三种资源类型与两种时间维度

PSI(Pressure Stall Information)是Linux内核4.20引入的指标,用于量化系统资源(CPU、内存、IO)因竞争导致的任务等待时间占比。理解PSI,需要先拆解其资源类型和时间维度两个核心维度。

2.1 三种资源类型:CPU、内存、IO

PSI分别监控三类资源,每类资源独立统计,互不干扰:

资源类型 监控对象 典型竞争场景 影响
CPU 可运行队列中的任务等待CPU时间片 高并发计算、线程数远超CPU核数 任务调度延迟,吞吐下降
内存 (memory) 任务因等待物理内存/swap而阻塞 内存泄漏、OOM、频繁swap换入换出 进程卡顿,严重时触发OOM Killer
IO 任务因等待块设备IO完成而休眠 磁盘带宽打满、大量随机读写、存储故障 应用响应变慢,数据库查询超时
实践要点:CPU和内存的竞争通常与计算密集型或内存密集型应用相关;IO竞争则常见于数据库、日志系统、大数据处理等场景。告警阈值应针对不同资源分别设定。

2.2 两种时间维度:some 与 full

每种资源类型下,PSI都提供两个时间维度指标,用于描述受影响的任务范围:

  • some:至少有一个任务因该资源而等待的时间占比。表示资源存在竞争,但系统可能仍在处理其他任务。
  • full:所有非空闲任务都因该资源而等待的时间占比。表示资源严重饱和,系统整体停滞。

some 和 full 的关系可以类比“局部拥堵”与“全路瘫痪”:

some = 至少一辆车在等红灯(部分任务等待)
full = 所有车道全部堵死(所有任务等待)

2.3 PSI指标数值的含义

PSI指标以百分比形式呈现,表示在特定时间窗口内,任务处于等待状态的时间占比。内核默认提供三个时间窗口:10秒、60秒、300秒。

例如,some avg10=5.00 表示在过去10秒内,平均有5%的时间至少有一个任务在等待资源。

指标示例 含义 严重程度
some avg10=0.50 过去10秒,0.5%的时间有任务等待 轻微,可忽略
some avg10=10.00 过去10秒,10%的时间有任务等待 中等,需关注
full avg10=5.00 过去10秒,5%的时间所有任务都在等待 严重,可能影响SLA
full avg60=30.00 过去60秒,30%的时间系统完全停滞 紧急,需立即处理
注意:some 和 full 的数值是独立的。例如,CPU some=20% 而 full=5%,说明CPU竞争主要影响部分任务,但尚未导致全局停滞。full 值越高,系统整体可用性越差。

2.4 PSI指标结构总览

下图展示了PSI指标的整体结构,帮助理解资源类型与时间维度的组合关系:

PSI指标结构总览 PSI 指标 CPU 内存 (memory) IO some full some full some full 每个 some/full 下包含 avg10 / avg60 / avg300 三个时间窗口 数值示例(CPU some) some avg10=2.50 avg60=1.80 avg300=1.20 含义:过去10秒平均2.5%时间有任务等待CPU,过去60秒平均1.8%,过去300秒平均1.2%

2.5 如何读取 /proc/pressure/ 文件

系统通过 /proc/pressure/ 目录下的三个文件暴露PSI指标:

# 查看CPU压力
cat /proc/pressure/cpu
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0

# 查看内存压力
cat /proc/pressure/memory
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0

# 查看IO压力
cat /proc/pressure/io
some avg10=0.00 avg60=0.00 avg300=0.00 total=0
full avg10=0.00 avg60=0.00 avg300=0.00 total=0

各字段含义:

  • avg10 / avg60 / avg300:过去10秒、60秒、300秒的平均等待时间占比(百分比)。
  • total:系统启动至今的累计等待微秒数(用于计算长期趋势)。

关键理解:PSI的数值是比例而非绝对值。例如 some avg10=10.00 表示10%的时间存在资源竞争,而非任务等待了10秒。这个比例直接反映了资源瓶颈对任务进度的拖累程度。

2.6 资源类型与时间维度的组合矩阵

将三种资源与两种时间维度组合,可以得到6个核心监控指标,每个指标反映不同的系统状态:

组合 含义 典型告警阈值参考
CPU some 部分任务在等待CPU avg10 > 10% 关注,> 30% 告警
CPU full 所有任务都在等待CPU(极少发生) avg10 > 5% 告警
内存 some 部分任务因内存不足阻塞 avg10 > 5% 关注,> 15% 告警
内存 full 系统整体因内存不足停滞 avg10 > 2% 告警
IO some 部分任务在等待IO avg10 > 10% 关注,> 30% 告警
IO full 所有任务都在等待IO avg10 > 5% 告警
注意:上述阈值仅为经验参考值,实际生产环境需根据业务容忍度、资源规格、应用类型进行调整。后续章节将详细讲解阈值设定方法论。

通过以上解读,你应该能够准确理解PSI指标中资源类型、时间维度和数值含义三个核心要素。这是后续设定告警阈值的基础。