分析用户cpu使用率很高,但进程cpu使用率都很低的情况

2023-02-14  本文已影响0人  _Irving

哪种工具适合在第一时间分析进程cpu问题呢,我的推荐是perf。

perf

perf top

perf top 命令用于实时系统分析,其功能与 top 实用程序类似。但是,top 实用程序通常显示给定进程或线程使用的 CPU 时间,perf top 会显示每个特定函数使用的 CPU 时间。在默认状态下,perf top 将告知您用户空间和内核空间的所有 CPU 所使用的函数。

[root@localhost ~]# perf top

Samples: 55K of event 'cpu-clock', 4000 Hz, Event count (approx.): 10236634002 lost: 0/0 drop: 0/0
Overhead  Shared Object                             Symbol
  10.94%  [kernel]                                  [k] __do_softirq
   6.51%  libpython2.7.so.1.0                       [.] PyEval_EvalFrameEx
   3.32%  [kernel]                                  [k] _raw_spin_unlock_irqrestore
   3.03%  [kernel]                                  [k] copy_pte_range
   2.95%  [kernel]                                  [k] run_timer_softirq
   2.41%  [kernel]                                  [k] unmap_page_range
   1.28%  [kernel]                                  [k] finish_task_switch
   1.26%  [kernel]                                  [k] __do_page_fault
perf top -g -p pid
-g开启调用关系分析,方便根据调用链分析  -p指定进程id
[wanchao@localhost ~]$ perf top -g -p 21515

按上下方向键切换到我们想查看的进程,再按下回车键展开该进程的调用关系,你会发现那些函数调用占用比例高

image.png
perf record
perf top不保存数据,perf record可以保存数据
[wanchao@localhost ~]$ perf record -g  #记录性能事件,等待大约15秒后按ctrl+c终止采样
[wanchao@localhost ~]$ perf report #展示perf top报告

pstree

pstree用树状形式显示所有进程之间的关系
当查看用户cpu使用率非常高,但是查看进程的是cpu使用率时,都很低,但是发现一些进程的进程id在频繁改变,这可能两方面的原因:

#注:pstree安装不能直接yum install -y pstree,而是:
[root@localhost ~]# yum install -y psmisc
#使用pstree就可以查看该不断重启的进程的调用关系了
[wanchao@localhost yum.repos.d]$ pstree|grep stress-ng
        |-sshd-+-sshd---sshd---bash---su---bash---stress-ng---stress-ng-cpu

execsnoop

execsnoop是一个专门未短时进程设计的工具,它通过ftrace实时监控进程的exec()行为,并输出短时进程的基本信息,包括PID、父进程pid、命令行参数以及执行的结果

[wanchao@localhost ~]$ execsnoop  
上一篇 下一篇

猜你喜欢

热点阅读