前言
最近准备再做压测,对于压测,需要有指标去寻找瓶颈,CPU正是其中关键一环。本文聚焦于CPU角度,理清CPU的指标有哪些,总结CPU性能指标概念。
CPU性能指标有哪些
通过常用的top命令,可以看出CPU的大部分指标:
top - 12:17:02 up 11 days, 21:04, 0 users, load average: 1.85, 1.67, 1.75
Tasks: 23 total, 1 running, 22 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.7 us, 2.1 sy, 0.0 ni, 95.1 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
其中CPU性能指标相关的包括:
- load average:平均负载
- us: user 用户空间占用CPU的百分比
- sy: system 系统空间占用CPU的百分比
- ni: nice 跟进程优先级相关,指的是改变过优先级的进程占用CPU的百分比
- id: idle 空闲CPU百分比
- wa: iowait IO等待占用CPU的百分比
- hi: 硬中断(Hardware Interrupts)占用CPU的百分比
- si: 软中断(Software Interrupts)占用CPU的百分比
- st: steal,下文会讲
上面是top命令能看到的东西。而总的来说,CPU的性能指标主要包括
- 平均负载
- CPU使用率
- 上下文切换
- CPU缓存命中率
下面分别介绍这些性能指标。
平均负载
简单来说,平均负载代表系统繁忙程度。平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。
- 所谓可运行状态的进程,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
- 不可中断状态的进程则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应