美文网首页
go 的性能分析工具 trace

go 的性能分析工具 trace

作者: wayyyy | 来源:发表于2022-01-08 21:57 被阅读0次

trace 这个工具跟踪采集一段时间的信息,然后 dump 成文件,最后调用 go tool trace 分析 dump 文件,并且支持将分析结果以 web 的形式打开。

它适合如下场景:

  • 找出程序在一段时间内做什么?

trace dump文件生成方式有3种:

  • 运行 go test 的时候,带上-trace参数标记:go test -trace=trace.out
  • 从 pprof 中获取实时的 trace dump 文件
    curl http://127.0.0.1:6060/debug/pprof/trace?seconds=10 > trace.out
    
  • 在代码中编码嵌入写入trace dump 文件
    package main
    
    import (
        "io/ioutil"
        "log"
        "os"
        "runtime/trace"
        "sync"
    )
    
    func main() {
        // 1. 创建trace持久化的文件句柄
        f, err := os.Create("trace.out")
        if err != nil {
            log.Fatalf("failed to create trace output file: %v", err)
        }
        defer func() {
            if err := f.Close(); err != nil {
                log.Fatalf("failed to close trace file: %v", err)
            }
        }()
    
        // 2. trace绑定文件句柄
        if err := trace.Start(f); err != nil {
            log.Fatalf("failed to start trace: %v", err)
        }
        defer trace.Stop()
    
        // 下面就是你的程序代码
        var wg sync.WaitGroup
        wg.Add(2)
    
        // 一个协程用来读文件
        go func() {
            defer wg.Done()
            ioutil.ReadFile(`code.txt`)
        }()
    
        // 写文件协程
        go func() {
            defer wg.Done()
                ioutil.WriteFile(`code2.txt`, []byte(`hello world`), 0644)
        }()
    
        wg.Wait()
    }
    

生成trace dump文件后,我们可以使用go tool trace trace.out -http=127.0.0.1:62155

然后打开:http://127.0.0.1:62155

image.png

页面上的内容如下:

  • 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 利用率
查看gc时间
查看g的调度时延

参考资料
1、https://zhuanlan.zhihu.com/p/332501892

相关文章

网友评论

      本文标题:go 的性能分析工具 trace

      本文链接:https://www.haomeiwen.com/subject/pmhycrtx.html