『每周译Go』go 中的 pprof 工具和格式化

在 Go 中内置的几种分析器都是为使用 pprof(https://github.com/google/pprof)的可视化工具而设计的。pprof 本身不是谷歌的官方项目,pprof 一开始设计的目的是分析来自 c++、Java 和 Go 程序的数据。该项目使用 protocol buffer 协议定义了所有 Go 分析器的格式,本文都会对他们进行描述。

Go 项目本身捆绑了(https://github.com/golang/go/tree/master/src/cmd/pprof)一个可以通过 go tool pprof 命令调用的 pprof 工具。除了一些调整外,它与原本的 pprof 工具大致相同。Go 建议始终使用 go tool pprof 命令来进行分析,而不是原来的 pprof 工具来分析 Go 。

特点

pprof 工具提供一个交互式命令行界面,一个 Web UI,还包括各种其他输出格式选项。

文件格式

描述

pprof 相关的格式定义在 profile.proto (https://github.com/google/pprof/blob/master/proto/profile.proto)文件中, 这是一个使用 protocol buffer 协议定义的文件,并且这个文件带有比较全面的注释。另外,还有一个官方的说明(https://github.com/google/pprof/blob/master/proto/README.md) 。pprof 保存在磁盘的文件使用的是 gzip 格式压缩的。

俗话说,一张图胜过千言万语,下面是 pprof 工具的可视化格式,这张图片是使用protodot(https://github.com/seamia/protodot) 工具自动生成的。

280d01fd916237ec9840d9610d41547e.png

pprof 的数据格式似乎是为效率、多语言 (编程语言) 和不同的性能分析类型 (CPU、堆等) 而设计的,但正因为如此,它非常抽象,显得不直观。如果你想了解所有细节,请点击这里(https://github.com/google/pprof/blob/master/proto/profile.proto) 。继续向下阅读也能知道这么设计的原因。pprof 文件包含采集的堆栈列表,这些堆栈信息具有一个或多个与之关联的数值。比如对于 CPU 性能分析,该值可能是在性能分析期间观察到堆栈的 CPU 持续时间(以纳秒为单位)。对于堆性能分析,它可能是分配的字节数。值类型本身在文件的开头进行了描述,并用于填充 pprof UI 中的 “SAMPLE” 下拉列表。除了值之外,每个堆栈跟踪

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值