要生成trace跟踪文件,需要使用runtime.trace的功能,具体代码如下
func main() {
trace.Start(os.Stderr)
defer trace.Stop()
...
}
生成跟踪文件
go run main.go 2> trace.out
启动可视化界面
go tool trace trace.out
trace 可视化界面具体可以分为以下几个部分
View trace: 查看跟踪
Goroutine analysis: goroutine分析
Network blocking profile: 网络阻塞情况
Synchronization blocking profile: 同步阻塞情况
Syscall blocking profile: 系统调用阻塞情况
Scheduler latency profile: 带哦度延迟情况
User defined tasks: 用户自定义任务
User defined regions: 用户自定义区域
Minimum mutator utilization: 最低mutator利用率