golang学习笔记-pprof性能分析2

前言

golang自带非常强大的性能分析工具,它可以在Go程序的运行中以精致的细节显示所有运行时事件,今天我们就了解一下go tool trace的强大之处。

一、概述

go tool trace 显示了非常之多的信息,为了简单起见,我们先概括的看一下他显示了些什么,下面是我生成的所有trace目录,具体的如图上所示,我们逐个分析。
golang学习笔记-pprof性能分析2_第1张图片

二、详细

1、view trace
打开一个view trace,过程可能需要一点时间,稍作等待,打开之后看到的画面如下,包含一些注解:
golang学习笔记-pprof性能分析2_第2张图片
Heap:查看堆的使用情况,可以查看任何时刻的堆情况。下一次GC的时间,当前使用的内存情况。如下:
golang学习笔记-pprof性能分析2_第3张图片
Threads:当前的线程使用情况,如下图:
golang学习笔记-pprof性能分析2_第4张图片
golang学习笔记-pprof性能分析2_第5张图片
Proc x:当前“核”的groutines执行情况(具体内容还没看懂什么鬼
golang学习笔记-pprof性能分析2_第6张图片

最右侧的统计信息:
golang学习笔记-pprof性能分析2_第7张图片
2、Goroutine analysis
打开Goroutine analysis看到的所有的goroutines和对应所在的模块,N表示当前模块(函数)启动的goroutines的数目,如下图:
golang学习笔记-pprof性能分析2_第8张图片
随机点开一个,CmpServer/MyKafka.(*MyProducer).run 查看具体的信息:
golang学习笔记-pprof性能分析2_第9张图片
3、Network blocking profile
4、Synchronization blocking profile
5、Syscall blocking profile
6、Scheduler latency profile
7、User-defined tasks
8、User-defined regions
3~8不逐个展开(还不明白流程图具体代表的什么意思)

待续…

参考:
https://blog.csdn.net/csdnnews/article/details/81009432
https://making.pusher.com/go-tool-trace/
https://about.sourcegraph.com/go/an-introduction-to-go-tool-trace-rhys-hiltner

你可能感兴趣的:(#,golang)