社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
golang自带非常强大的性能分析工具,它可以在Go程序的运行中以精致的细节显示所有运行时事件,今天我们就了解一下go tool trace
的强大之处。
go tool trace 显示了非常之多的信息,为了简单起见,我们先概括的看一下他显示了些什么,下面是我生成的所有trace目录,具体的如图上所示,我们逐个分析。
1、view trace
打开一个view trace
,过程可能需要一点时间,稍作等待,打开之后看到的画面如下,包含一些注解:Heap
:查看堆的使用情况,可以查看任何时刻的堆情况。下一次GC的时间,当前使用的内存情况。如下:Threads
:当前的线程使用情况,如下图:Proc x
:当前“核”的groutines执行情况(具体内容还没看懂什么鬼)
最右侧的统计信息:
2、Goroutine analysis
打开Goroutine analysis
看到的所有的goroutines和对应所在的模块,N表示当前模块(函数)启动的goroutines的数目,如下图:
随机点开一个,CmpServer/MyKafka.(*MyProducer).run
查看具体的信息:
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
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!