系统占用CPU 资源很高,但是却找不到具体的应用

如果使用 top、pidstat 等工具发现 用户 CPU 占用很高,但是具体进程看发现CPU 占用并不高,可以通过perf 分析一段时间内的报告

1
2
3
4
5
# 记录性能事件,等待大约 15 秒后按 Ctrl+C 退出
$ perf record -g

# 查看报告
$ perf report

或者使用execsnoop 分析是否有短时进程,execsnoop 通过ftrace 实时监控进程的 exec()行为,并输出短时进程的基本信息,包括 PID 父进程PID 等

1
2
3
4
5
6
7
8
9
10
11
12
# 按 Ctrl+C 结束
$ execsnoop
PCOMM PID PPID RET ARGS
sh 30394 30393 0
stress 30396 30394 0 /usr/local/bin/stress -t 1 -d 1
sh 30398 30393 0
stress 30399 30398 0 /usr/local/bin/stress -t 1 -d 1
sh 30402 30400 0
stress 30403 30402 0 /usr/local/bin/stress -t 1 -d 1
sh 30405 30393 0
stress 30407 30405 0 /usr/local/bin/stress -t 1 -d 1
...