美文网首页
go-runtime/trace

go-runtime/trace

作者: 酷走天涯 | 来源:发表于2018-12-25 09:25 被阅读16次

执行追踪器,跟踪器捕获各种各样的时间,如go协程的创建、阻塞、解锁,syscall 进入、退出、阻塞、GC相关时间,堆大小变化,处理器启动、停止等,将这些事件写入到io.writor中,大多数时间都会捕获到精确的纳秒精度时间戳

  • 如何创建go执行追踪器
  • 如何停止追踪器
  • 如何查看追踪器记录的数据

如何创建go执行追踪器

func Start(w io.Writer) error

未当前的程序启用追踪器,追踪的数据将会写入w 中,不能重复创建

如何停止追踪器

func Stop()

停止当前的追踪器,当所有追踪完全写入w后,才返回

如何查看追踪器记录的数据

go tool trace xxxx

下面我们看一个例子

package main

import (
    "os"
    "runtime/trace"
    "time"
)

func main() {
  file,_ := os.Create("/Users/xujie/go/src/awesomeProject/main/trace")
  trace.Start(file)
  defer trace.Stop()
  data := make(chan int)
  go test(data)
  <- data
}
func test(s chan int){
    time.Sleep(time.Second)
    go test2(s)
}
func test2(s chan int){
    time.Sleep(time.Second)
    s <- 3
}
image.png

运行代码后,就在main包中生成了一个文件,我们使用下面的命令查看这个文件的内容

go tool trace /Users/xujie/go/src/awesomeProject/main/trace

系统会自动启动浏览器

image.png

然后我们可以对一项内容进行查看

相关文章

  • go-runtime/trace

    执行追踪器,跟踪器捕获各种各样的时间,如go协程的创建、阻塞、解锁,syscall 进入、退出、阻塞、GC相关时间...

  • Systrace自定义TAG使用

    自定义Trace TAG 使用Trace.beginSection() 和 Trace.endSection() ...

  • Istio Trace链路追踪方案

    [TOC] Istio Trace链路追踪方案 Istio Trace支持 envoy支持trace envoy原...

  • golang grpc调用轨迹记录-trace

    在server端引入trace包 "golang.org/x/net/trace" //添加trace的http监...

  • MYSQL 8 優化之04 (通过trace分析)

    1.打开trace & 设置格式为json,并设置trace的最大能够使用内存大小 trace 分析

  • go-runtime/debug

    程序包调试了包含程序在运行时进行调试功能,本节就针对api进行一一讲解 1.强制进行垃圾回收 2.设置垃圾回收的目...

  • go-runtime/pprof

    软件包 pprof主要功能是可视化工具所期望的格式写入运行时的分析数据 获取所有已知profile的切片,按名称排...

  • 性能深度分析之System Trace

    性能深度分析之System Trace性能深度分析之System Trace

  • Trace

    新的课程 如果不留下点痕迹 怎么证明来过

  • The Trace

    How to extinct my sorrow,the place where i lost u.the sme...

网友评论

      本文标题:go-runtime/trace

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