execsnoop-短時進程追蹤工具

在實際工作中,偶爾會遇到系統的CPU使用率和系統平均負載很高,但卻找不到高CPU的應用;

產生這個問題的原因:進程有可能在不斷的崩潰、重啓


通過uptime發現系統負載很高,但是通過top,mpstat,pidstat,perf等工具很難發現是什麼進程導致了系統負載和CPU使用率很高;

注:通過上面工具的判斷,即不是CPU密集型,也不存在IO等待,也不存在進程、線程爭用的情況


execsnoop-專門用於爲追蹤短時進程(瞬時進程)設計的工具;

它通過 ftrace 實時監控進程的 exec() 行爲,並輸出短時進程的基本信息,包括進程 PID、父進程 PID、命令行參數以及執行的結果。

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使用率升高;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章