最好在root權(quán)限下執(zhí)行指令甜刻,權(quán)限開放情況下才能采集到完整的堆棧信息
perf使用
# 采集信息
? ? ? ? ? ? ? ? ? sudo perf record -F 99 -p 72448 -g -- sleep 30
? perf record 表示采集系統(tǒng)事件,-F 99 表示每秒 99 次, -p 72448 是進程號, 即對哪個進程進行分析, -g 表示記錄調(diào)用棧, sleep 30 則是持續(xù) 30 秒.
? ? ? ? ? ? ? ? sudo perf report -n --stdio
? ? # 生成火焰圖
? ? ? ? ? ? ? ? sudo perf script -i perf.data | ./FlameGraph/stackcollapse-perf.pl | ./FlameGraph/flamegraph.pl > perf.svg
3.將.svg文件用瀏覽器打開即可查看火焰圖信息
如上所示,即是抓取到的cpu火焰圖
火焰圖分析
? 火焰圖反映堆棧函數(shù)的調(diào)用信息,頂端越寬則代表這個函數(shù)存在問題更大
? all即為程序進程
? 第二層為main函數(shù)處理以及thrift方法的線程池洞辣,命名可以在程序中設置
可以查看到thrift每一個線程中mpi_montmul方法占用很多cpu驱证,查找發(fā)現(xiàn)為openssl庫調(diào)用的作為解密所需要的函數(shù),因此無太大優(yōu)化空間
如果看完覺得有所收獲的話书聚,記得點贊關(guān)注哦