现象

系统 CPU 使用率占用很高,到了 70 多,但是单个进程占用又很少

可能原因

由于小任务一直被创建,执行完成之后又马上被关闭,从而在 top 上看不到

  • 第一,应用里直接调用了其他二进制程序,这些程序通常运行时间比较短,通过 top 等工具也不容易发现
  • 第二,应用本身在不停地崩溃重启,而启动过程的资源初始化,很可能会占用相当多的 CPU

现象分析

遇到这样的情况可以参考有没有下述事情发生

  • top 之后,发现主进程在 S 状态,并没有执行,但是偶尔在 R 状态的进程执行一会之后又不见了
  • 通过 ps 或者 pidstat 无法查询到对应的 R 进程,说明启动后马上结束了

可以尝试利用 perf 记录进行分析

  • 首先用 perf record -g 等待一段时间
  • 然后使用 perf report 查看报告
  • 一般这个时候就能捕捉到那些一闪而过的进程