在實際工做中,偶爾會遇到系統的CPU使用率和系統平均負載很高,但卻找不到高CPU的應用;git
產生這個問題的緣由:進程有可能在不斷的崩潰、重啓github
經過uptime發現系統負載很高,可是經過top,mpstat,pidstat,perf等工具很難發現是什麼進程致使了系統負載和CPU使用率很高;
bash
注:經過上面工具的判斷,即不是CPU密集型,也不存在IO等待,也不存在進程、線程爭用的狀況ide
execsnoop-專門用於爲追蹤短時進程(瞬時進程)設計的工具;工具
它經過 ftrace 實時監控進程的 exec() 行爲,並輸出短時進程的基本信息,包括進程 PID、父進程 PID、命令行參數以及執行的結果。oop
github地址:https://github.com/brendangregg/perf-tools/blob/master/execsnoop 命令行
如何安裝使用:將上面的github的內容複製,而後寫入execsnoop文件,而且加上x權限便可;線程
使用方法:
設計
#./execsnoop 59187 59186 /usr/local/bin/stress -t 1 -d 1 59188 28775 <...>-59188 [000] d... 40067.137167: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59191 59188 /usr/local/bin/stress -t 1 -d 1 59190 28778 <...>-59190 [003] d... 40067.138913: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59192 28776 <...>-59192 [003] d... 40067.139103: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59194 59192 /usr/local/bin/stress -t 1 -d 1 59196 59190 /usr/local/bin/stress -t 1 -d 1 59198 28770 <...>-59198 [001] d... 40067.145500: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59199 28779 <...>-59199 [001] d... 40067.146228: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59200 59198 /usr/local/bin/stress -t 1 -d 1 59202 59199 /usr/local/bin/stress -t 1 -d 1 59204 28778 <...>-59204 [002] d... 40067.155150: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59206 28775 <...>-59206 [001] d... 40067.157282: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59208 59206 /usr/local/bin/stress -t 1 -d 1 59209 28770 <...>-59209 [003] d... 40067.158381: execsnoop_sys_execve: (SyS_execve+0x0/0x30) 59205 59204 /usr/local/bin/stress -t 1 -d 1 59207 28776 <...>-59207 [002] d... 40067.158882: execsnoop_sys_execve: (SyS_execve+0x0/0x30)
能夠看到有大量的stress進程,不斷的在啓用,形成系統的負載和CPU使用率升高;進程