監控某段時間特定進程CPU使用情況

監控某段時間特定進程CPU使用情況


背景

之前一直想找一個進程級別的監控工具
尤其是想能通過prometheus進行監控
但是發現總是很不如人意

node_exporter 的監控只能看到整體的
actuator的無法看到啓動過程中的CPU使用情況.
一直沒有找到一個比較好的方式.

之前一般採用 top -Hp $pid -bn 1 的方式多次查詢來進行查看
但是統計數據比較困難.

最近幫同事看 一個慢的問題 纔想起來. 兩年前自己想學的ebpf
一直沒有深入學習. 

perf

perf:
perf是一個性能分析工具,可用於檢測和優化Linux系統中的性能問題。
它能夠收集各種性能數據,如CPU使用率、內存使用情況、磁盤IO和網絡IO等,
從而幫助用戶找出系統中的性能瓶頸。用戶可以使用perf來分析應用程序的性能,
並針對性能問題進行優化。perf工具由Linux內核開發人員開發,
是Linux系統中最常用的性能分析工具之一。

最簡單的使用

之前總結過 flamegraph的用法, 不在複述. 
總結一下兩個小方法

監控啓動過程中的比較高的CPU使用

perf top -p $pid 

可以看到啓動過程中有大量的zip 相關的指令
說明系統在進行 jar包的讀取與解壓縮

所以IO會影響產品的啓動速度

image


查看每秒鐘的進程CPU使用情況

perf stat -e task-clock -p $pid 

可以查看一段時間內的CPU使用情況
perf stat -e task-clock -p 120007 -I 1000
#           time             counts unit events
     1.000942770           1,094.12 msec task-clock                #    1.094 CPUs utilized
     2.001466163           1,457.88 msec task-clock                #    1.458 CPUs utilized
     3.001833373           1,207.22 msec task-clock                #    1.207 CPUs utilized
     4.002150053           1,370.39 msec task-clock                #    1.370 CPUs utilized
     5.002495263           1,028.87 msec task-clock                #    1.029 CPUs utilized

參數說明

-e 指定監控某些event
-I 指定報告間隔, 單位秒鐘.
-p 指定進程號

需要說明 不指定 -e 的話 還能看到 io 和 cs 的信息
也比較關鍵.

然後可以使用excel將CPU使用情況展示出來.

image

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