golang cpu 内存分析

top命令可以查看cpu使用情况的前几名

list 函数名 可以查看函数的cpu使用情况

最后一列为函数名称,其他各项内容意义如下:

flat:当前函数占用CPU的耗时

flat%:当前函数占用CPU的耗时百分比

sum%:函数占用CPU的累积耗时百分比

cum:当前函数+调用当前函数的占用CPU总耗时

cum%: 当前函数+调用当前函数的占用CPU总耗时百分比

例如:

(pprof) top10

Total: 2525 samples

298 11.8% 11.8% 345 13.7% runtime.mapaccess1_fast64

268 10.6% 22.4% 2124 84.1% main.FindLoops

251 9.9% 32.4% 451 17.9% scanblock

178 7.0% 39.4% 351 13.9% hash_insert

131 5.2% 44.6% 158 6.3% sweepspan

119 4.7% 49.3% 350 13.9% main.DFS

96 3.8% 53.1% 98 3.9% flushptrbuf

95 3.8% 56.9% 95 3.8% runtime.aeshash64

95 3.8% 60.6% 101 4.0% runtime.settype_flush

88 3.5% 64.1% 988 39.1% runtime.mallocgc

开启 CPU profiling 后,Golang 程序在 1 秒钟会停顿 100 次,每次停顿都会记录 1 个样本。上例中,前两列表示运行的函数的样本数量(the number of samples in which the function was running)和占总样本数的百分比,例如说 runtime.mapaccess1_fast64 函数在 298 次采样中(占总采样数量的 11.8%)正在运行。第三列表示前几行样本数量总和占总样本数的百分比(第二行 22.4% 为 11.8% + 10.6%)。第四、五列表示出现的函数的样本数量(the number of samples in which the function appeared)和占总样本数的百分比,这里“出现的函数”指的是在采样中正在运行或者等待某个被调用函数返回的函数,换句话就是采样中那些位于调用栈上的函数。我们可以使用 -cum(cumulative 的缩写)flag 来以第四、五列为标准排序。需要注意的是,每次采样只会包括最底下的 100 个栈帧(stack frames)。

参考文章:

https://blog.csdn.net/qq_28119741/article/details/109711641

https://blog.csdn.net/bravezhe/article/details/81747237

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值