CPU使用率是单位时间内cpu繁忙情况的统计。
监控
step1:
查看系统整体的CPU使用率
top -d 3 每3秒刷新一次
step2:
查看每个进程的CPU使用情况
pidstat 3 5 每各隔3秒输出一组数据,共输出5组
特别注意:如果找不到高CPU使用率的进程,可能是如下两个原因:1)进程在不停的崩溃重启。2)进程是短时进程,也就是在其他应用内部通过exec调用的外部命令,这些命令一般只运行很短时间就会结束。这时候可以使用execsnoop工具来监控。execsnoop使用详解
step3:
定位占用CPU的到底是代码里的哪个函数,使用工具perf,详细使用见:perf工具的详细使用
perf top(实时展示系统的性能信息)
perf record (保存数据),使用perf report解析展示。
perf top -g -p 进程号(查看对应进程的指定信息)
总结
CPU 使用率是最直观和最常用的系统性能指标,更是我们在排查性能问题时,通常会关注的第一个指标。所以我们更要熟悉它的含义,尤其要弄清楚用户(%user)、Nice(%nice)、系统(%system) 、等待I/O(%iowait) 、中断(%irq)以及软中断(%softirq)这几种不同 CPU 的使用率。比如说:
1、用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题。
2、系统 CPU 高,说明内核态占用了较多的 CPU,所以应该着重排查内核线程或者系统调用的性能问题。
3、I/O 等待 CPU 高,说明等待 I/O 的时间比较长,所以应该着重排查系统存储是不是出现了 I/O 问题。
4、软中断和硬中断高,说明软中断或硬中断的处理程序占用了较多的CPU,所以应该着重排查内核中的中断服务程序。