CPU 性能分析速查

Jul 22, 2020 22:00 · 796 words · 2 minute read Linux Performance CPU

CPU 性能指标

使用率

非空闲时间占总 CPU 时间的百分比

  • 系统 CPU 使用率,表示 CPU 在内核态运行的时间百分比(不包括中断)

  • 用户 CPU 使用率,表示 CPU 在用户态运行的时间百分比

  • 等待 I/O 的 CPU 使用率(iowait),表示系统与硬件设备的 I/O 交互时间

  • 软中断和硬中断的 CPU 使用率,表示内核调用软中断/硬中断处理程序的百分比,使用率高说明系统发生了大量中断

  • 窃取 CPU 使用率,表示被其他虚拟机占用的 CPU 时间百分比

  • 客户 CPU 使用率,表示运行客户虚拟机的 CPU 时间百分比

  • topsar 观察 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 观察

进程上下文切换

保证操作系统正常运行

  • 无法获取资源而导致的资源上下文切换
  • 被系统强制调度导致的非自愿上下文切换

使用 vmstatpidstat 观察

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 监控短时进程