文章目錄
- 前提
- 面臨的問題
- 內核級別函數的差別
- 繼續debug
- 總結
- 根據pid
前提
一個進程安置在一個CPU上,新功能上線之后,固定量的業務打起來,占用的CPU是42%。之前沒有新功能的情況下,CPU占用是40%。差了大約2%。而且這個進程里的線程數非常多,有50多個線程。從差距看變化不大,沒有別的辦法,只能使用perf來抓取數據來看。但是使用perf也要面臨很多的問題。
面臨的問題
面臨的問題有一堆:
- 兩次perf數據比較(根據方法:https://mzhan017.blog.csdn.net/article/details/148759386)發現,有差別的函數很多;需要一個一個看?有沒有什么別的方法來做?
- 有些內核級函數的差別也很大,怎么關聯到應用的邏輯改變?
- 怎么將CPU的使用率細化到線程級別?
- 如果可以細化到線程級別,然后可以使用perf做細化的數據抓取?
- 這樣分析起來是不是更簡單
- …
內核級別函數的差別
我們先看一下內核函數/系統函數的差別。下面數據解釋,第一列是之前的數據,第二列是新加功能只會的數據,第三列是差值。
有如下的發現: