linux系统CPU高追踪实战

先来个实战吧。

某进程CPU使用率非常高,不知道什么原因

linux系统CPU高追踪实战


使用perf命令排查

输入命令后,一会就可以Ctrl+c停止掉

# perf record -p 14942
^C[ perf record: Woken up 5 times to write data ]
[ perf record: Captured and wrote 1.396 MB perf.data (36172 samples) ]

分析刚才的数据

输入命令

# perf report


可以看到99.78%的CPU时间片都消耗在这个调用上面

按下回车

linux系统CPU高追踪实战


再按下回车

linux系统CPU高追踪实战

看代码貌似:

main函数中执行了demo函数,然后demo函数里面有个for{ } 循环


linux系统CPU高追踪实战


汇编指令

备注

inc

加1

cmp

比较

jle

小于等于

xor

逻辑或非

jmp

无条件转移

通过指令,大概可以看出,比较某数字,增加1

来看代码

package main
func main() {
     demo()
}
func demo(){
      for {
             sum:=0
             for i:=0;i<=1000000;i++ {
                    sum+=i
              }
       }
}


这里只是提供一个demo案例,你也可以使用这种方式找到热点函数

上一篇:《圣殿祭司的ASP.NET4.0专家技术手册》----2-9 集合初始化程序


下一篇:冬季实战营第三期:MySQL数据库进阶实战|学习报告