性能优化--CPU使用率

允我心安 提交于 2020-02-18 05:25:15

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定位短时进程。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!