性能优化--CPU使用率

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章