CPU性能篇 -- CPU使用率

CPU性能篇 -- CPU使用率

1. 什么是CPU使用率

CPU使用率, 指除了空闲时间外的其他时间占总CPU时间的百分比。
CPU使用率 = 1 - 空闲时间/总CPU时间
实际上,一般是取单位时间内的CPU使用率,即间隔一段时间的两次值,作差后,在计算出这段时间内的平均CPU使用率。
CPU使用率 = 1 - (空闲时间new-空闲时间old)/(总空闲时间new-总空闲时间old)

2. 关联指标

名称 含义 备注
user(us) 用户态CPU时间 不包括nice时间,但包括guest时间
nice(ni) 低优先级用户态CPU时间 进程的nice值调整为1-19之间的CPU时间
system(sys) 内核态CPU时间
idle(id) 空闲时间 不包括IO等待的时间
iowait(wa) 等待IO的CPU时间
irq(hi) 硬中断的CPU时间
softirq(si) 软中断的CPU时间
steal(st) 系统运行虚拟机时,被其他虚拟机占用的CPU时间
guest 虚拟化运行其他操作系统的时间 运行虚拟机的CPU时间
guest_nice(gnice) 低优先级运行虚拟机的时间

3.查看CPU使用率

常用的三个命令:
ps, pidstat, top

4.CPU使用率过高怎么办

perf + GDB
perf适合用来分析进程的CPU问题。
perf分析CPU性能问题的两种方法:

  1. perf top
    perf top可以实时显示占用CPU时钟最多的函数或者指令,因此用来查询热点函数。
    输出的第一行包含三个信息:
    Samples:采样数; event:事件类型;Event count:事件总数
    之后的四列数据含义为:

    Overhead 该符号的性能事件在所有采样中的比例
    Shared 该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核,进程名,动态链接库名,内核模块名
    Object 动态共享对象的类型,[.]表示用户空间的可执行程序,[k]表示内核空间。
    Symbol 符号名,也就是函数名。当函数未知时,用16进制地址来表示。
  2. perf record, perf report
    perf record: 提供保存数据的功能,perf report:解析展示。
    -g参数开启调用关系的采样,方便根据调用链来分析性能问题。

posted @ 2020-06-13 18:13  tulipgirl  阅读(1395)  评论(0)    收藏  举报