Linux性能分析---CPU
每一次调查性能问题都要从头梳理一次,而每一次检索都只能找到单独的命令,所以在这里就把常用的命令和方法做一下记录。至于判断标准,是从各个博文中找到的,未能从原理上证实其准确性,所以可能会有出入。
另外这里对所有的命令和工具都是做极简的概要性说明,详细说明可在文后的参考链接中查看。
CPU利用率的判断标准:
1)查看CPU利用率:User65%~70%,System30%~35%,Idle0%~5%。
2)上下文切换:只是一个参考因素,只要CPU利用率正常,这个值不需要太关注。
3)可运行队列:每个处理可以负担的可运行队列约为:1~3。
4)CPU负载: 一般15分钟内的负载应该 < 核心数*0.7
系统CPU利用率监测工具:
1)top : 监测系统CPU利用率,关注:User、sys、Idle及CPU占用率持续较高的进程
2)mpstat:查看各CPU的利用率
3)perf top:查看当前CPU占用率较高的系统API
4)vmstat:查看CPU利用率、中断、上下文切换、可运行队列数、阻塞队列数
5)cat /proc/cpuinfo:查看CPU信息
6)uptime:查看CPU负载
进程CPU利用率监测、分析工具:
1)pstack PID: 按照线程,打印进程堆栈
2)perf + 火焰图:利用perf打印进程信息,并使用火焰图将其图形化,然后找到CPU耗费时间高的函数
3)top -Hp PID: 将进程中的线程,按CPU占用率进行排列
4)ps -mp PID -o THREAD,tid,time:查看进程内的线程信息
5)ps hH p PID: 列出进程内的所有线程
参考文档: