3. 原始性能指标解析
压力测试中,原始性能指标是特征工程的起点。理解每个指标的含义、计算方式及其在系统瓶颈分析中的作用,是构建有效特征的基础。本章将系统解析 CPU、内存、磁盘 I/O 和网络四大类核心指标,并给出特征提取的实操建议。
3.1 CPU 指标
CPU 指标反映处理器的繁忙程度与工作模式。在压力测试中,通常关注 user、sys、iowait 和 idle 四个子项。
| 指标 | 含义 | 特征工程价值 |
|---|---|---|
| user | 用户空间(应用程序)占用 CPU 的百分比 | 高值表示应用层计算密集,可提取“用户态占比”作为负载特征 |
| sys | 内核空间(系统调用、中断)占用 CPU 的百分比 | 高值暗示系统调用频繁或驱动问题,可构造“内核态/用户态比值” |
| iowait | CPU 等待磁盘 I/O 完成的时间百分比 | 高值表明磁盘成为瓶颈,可提取“iowait 峰值窗口”作为特征 |
| idle | CPU 空闲时间百分比 | 低值表示 CPU 饱和,可计算“空闲率倒数”作为压力强度特征 |
实操要点: 在特征提取时,不要仅使用瞬时值。建议以 5 秒或 10 秒为窗口计算滑动平均值,并记录最大值、最小值、标准差,以捕捉 CPU 行为的波动特征。
3.2 内存指标
内存指标关注 used、buff/cache 和 available 三个关键值。在压力测试中,内存泄漏和缓存抖动是常见问题。
| 指标 | 含义 | 特征工程价值 |
|---|---|---|
| used | 已使用的物理内存(不含 buff/cache) | 持续增长可能暗示内存泄漏,可提取“used 增长率” |
| buff/cache | 内核缓冲区与页面缓存占用的内存 | 高值不一定坏事,但剧烈波动可能影响性能,可提取“cache 变化率” |
| available | 可分配给新进程的内存(含可回收 cache) | 最接近“真实可用”的值,可构造“可用内存比例”作为健康度特征 |
特征构造示例: 使用
available / total 作为内存压力特征,当该值低于 20% 时,系统进入内存紧张状态。结合 used 的差分序列,可以检测内存泄漏的早期信号。
3.3 磁盘 I/O 指标
磁盘 I/O 指标是压力测试中容易被忽视但影响巨大的维度。重点关注 r/s、w/s、await 和 svctm。
| 指标 | 含义 | 特征工程价值 |
|---|---|---|
| r/s | 每秒读请求次数 | 与业务读负载正相关,可提取“读请求密度” |
| w/s | 每秒写请求次数 | 写密集型场景的关键特征,可构造“读写比” |
| await | I/O 请求的平均等待时间(含排队+服务) | 高值表示磁盘响应慢,可提取“await 百分位值” |
| svctm | I/O 请求的平均服务时间(不含排队) | 反映磁盘硬件性能,可计算“排队时间 = await - svctm” |
常见误区: 不要单独使用
svctm 判断磁盘性能。现代 SSD 的 svctm 极低,但 await 可能因队列堆积而升高。建议同时观察 await - svctm 的差值,差值越大说明排队越严重。
3.4 网络指标
网络指标在分布式压力测试中至关重要。核心指标包括 rx/tx bytes、drop 和 error。
| 指标 | 含义 | 特征工程价值 |
|---|---|---|
| rx bytes | 每秒接收字节数 | 反映入站流量,可计算“带宽利用率” |
| tx bytes | 每秒发送字节数 | 反映出站流量,可构造“上下行比例” |
| drop | 被丢弃的数据包数量 | 高值表示网络拥塞或缓冲区不足,可提取“丢包率” |
| error | 发生错误的数据包数量 | 高值暗示物理链路或驱动问题,可构造“错误包占比” |
3.5 指标关联与特征融合
单一指标往往无法准确反映系统状态。在特征工程中,需要将不同维度的指标进行关联分析。
- CPU + 磁盘: 当
iowait升高且await同步升高时,可构造“I/O 阻塞因子”特征。 - 内存 + 网络: 当
available下降且tx bytes上升时,可能触发 OOM Killer,可构造“内存网络压力比”。 - CPU + 内存: 当
user高且used持续增长时,可构造“计算内存协同特征”。
实操建议: 在压力测试数据采集阶段,务必保持所有指标的时间戳对齐。建议使用统一的采样间隔(如 5 秒),并记录每个时间窗口内的聚合值(均值、P50、P95、P99),为后续特征工程提供高质量原始数据。