CPU 性能分析速查
Jul 22, 2020 22:00 · 796 words · 2 minute read
CPU 性能指标
使用率
非空闲时间占总 CPU 时间的百分比
-
系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断)
-
用户 CPU 使用率,表示 CPU 在用户态运行的时间百分比
-
等待 I/O 的 CPU 使用率(iowait),表示系统与硬件设备的 I/O 交互时间
-
软中断和硬中断的 CPU 使用率,表示内核调用软中断/硬中断处理程序的百分比,使用率高说明系统发生了大量中断
-
窃取 CPU 使用率,表示被其他虚拟机占用的 CPU 时间百分比
-
客户 CPU 使用率,表示运行客户虚拟机的 CPU 时间百分比
-
mpstat 观察每个 CPU 的使用情况
-
pidstat 观察进程的 CPU 使用情况
-
perf 分析进程调用链
-
strace 查看进行系统调用
-
execsnoop 监控进程调用的外部命令
-
htop 颜值更高的 top
硬中断
- vmstat 提供总的中断次数
- /proc/interrupts 查看硬中断类型和在每个 CPU 上的累计中断次数
软中断
- /proc/softirqs 查看软中断类型和运行情况
- top 观察软中断 CPU 使用率
- mpstat 提供软中断运行情况
平均负载
系统的整体负载情况,主要包括过去 1 分钟、过去 5 分钟、过去 15 分钟的平均负载
理想情况下平均负载 == 逻辑 CPU 个数,表示每个 CPU 都被充分利用
使用 uptime、top 观察
进程上下文切换
保证操作系统正常运行
- 无法获取资源而导致的资源上下文切换
- 被系统强制调度导致的非自愿上下文切换
CPU 缓存命中率
衡量 CPU 缓存的复用情况,
- L1
- L2
- L3
三级缓存越来越大但是性能越来越差,命中率越高表示性能越好
perf
根据工具查指标
工具 | CPU 性能指标 |
---|---|
uptime | 平均负载 |
top | 平均负载 运行队列 整体的 CPU 使用率 每个进程的状态和 CPU 使用率 |
htop | top 增强版 |
atop | CPU、内存、磁盘和网络全面监控 |
vmstat | 系统整体的 CPU 使用率 上下文切换次数 中断次数 处于运行和不可中断状态的进程数量 |
pidstat | 进程和线程的 CPU 使用率 中断上下文切换次数 |
mpstat | 每个 CPU 的使用率和软中断次数 |
/proc/softirqs | 软中断类型和在每个 CPU 上的累计中断次数 |
/proc/interrupts | 硬中断类型和在每个 CPU 上的累计中断次数 |
ps | 每个进程的状态 |
pstree | 进程父子关系 |
dstat | 系统整体的 CPU 使用率 |
sar | 系统整体的 CPU 使用率 |
strace | 进程的系统调用 |
perf | CPU 性能事件剖析 调用链分析 CPU缓存 CPU调度 |
execsnoop | 监控短时进程 |