usr 用户态CPU时间
nice 低优先级用户态CPU时间
system 系统态CPU时间
idle 空闲时间
iowait 等待IO的时间
irq 硬中断的时间
softirq 软中断的时间
steal 当系统运行在虚拟机中时,被其他CPU占用的时间。
gust 通过虚拟化,运行其他操作系统的时间。
gust_nice 以低优先级运行虚拟化的时候。
CPU使用率 = 1- 空闲时间/CPU总时间
用户态占用过多的CPU,应着重排查用户进程的性能问题。
系统态占用过多的CPU,应着重排查系统调用,内核进程的问题。
IO等待时机过长,应着重排查系统存储的IO问题。
软中断硬中断,应着重排查内核中的中断服务程序。
top,perf top -g 进程号 必须加-g才能显示函数调用信息。看exectue_ex下的函数调用。
碰到CPU占用率过高,但是top看不到CPU占用高的进程的情况可能是:
1、进程不断因为某种原因(段错误等)退出之后,被监视进程不断重启。
2、在进程内部通过exec调用的外部命令。这些命令进程只运行很短的时间就退出,一般很难用top来监控。
用工具https://github.com/brendangregg/perf-tools/blob/master/execsnoop可以监视出存在时间很短的进程。
也可以用perf record -g观察15秒,然后用perf report查看结果,可以定位出占用CPU使用率高的进程。
碰到CPU使用率过高问题的定位思路:
1、top命令查看CPU使用率,定位使用率高的进程,如果有,直接perf查看进程,定位到函数位置,走读代码,发现问题。
2、如果top命令查看CPU使用率高,但查不到使用率高的进程,考虑短时进程问题。用execsnoop工具定位短时进程。用perf record -g 和perf report定位短时进程。
来源:CSDN
作者:技术老虎Tiger
链接:https://blog.csdn.net/li2572889641/article/details/86704540