文章目录
- 前提
- 面临的问题
- 内核级别函数的差别
- 继续debug
- 总结
- 根据pid
前提
一个进程安置在一个CPU上,新功能上线之后,固定量的业务打起来,占用的CPU是42%。之前没有新功能的情况下,CPU占用是40%。差了大约2%。而且这个进程里的线程数非常多,有50多个线程。从差距看变化不大,没有别的办法,只能使用perf来抓取数据来看。但是使用perf也要面临很多的问题。
面临的问题
面临的问题有一堆:
- 两次perf数据比较(根据方法:https://mzhan017.blog.csdn.net/article/details/148759386)发现,有差别的函数很多;需要一个一个看?有没有什么别的方法来做?
- 有些内核级函数的差别也很大,怎么关联到应用的逻辑改变?
- 怎么将CPU的使用率细化到线程级别?
- 如果可以细化到线程级别,然后可以使用perf做细化的数据抓取?
- 这样分析起来是不是更简单
- …
内核级别函数的差别
我们先看一下内核函数/系统函数的差别。下面数据解释,第一列是之前的数据,第二列是新加功能只会的数据,第三列是差值。
有如下的发现: