]> Cypherpunks repositories - gostls13.git/commit
runtime/trace: user annotation API
authorHana Kim <hakim@google.com>
Thu, 9 Nov 2017 16:39:10 +0000 (11:39 -0500)
committerHyang-Ah Hana Kim <hyangah@gmail.com>
Thu, 15 Feb 2018 18:52:43 +0000 (18:52 +0000)
commit32d1cd33c7b93267d371baa7206aed6bbd236d00
tree17b23634dc0f7e816e1dfad5a44efae610e635e6
parente057680542bd5a31a024ec1f321c439571086d42
runtime/trace: user annotation API

This CL presents the proposed user annotation API skeleton.
This CL bumps up the trace version to 1.11.

Design doc https://goo.gl/iqJfJ3

Implementation CLs are followed.

The API introduces three basic building blocks. Log, Span, and Task.

Log is for basic logging. When called, the message will be recorded
to the trace along with timestamp, goroutine id, and stack info.

   trace.Log(ctx, messageType message)

Span can be thought as an extension of log to record interesting
time interval during a goroutine's execution. A span is local to a
goroutine by definition.

   trace.WithSpan(ctx, "doVeryExpensiveOp", func(ctx context) {
      /* do something very expensive */
   })

Task is higher-level concept that aids tracing of complex operations
that encompass multiple goroutines or are asynchronous.
For example, an RPC request, a HTTP request, a file write, or a
batch job can be traced with a Task.

Note we chose to design the API around context.Context so it allows
easier integration with other tracing tools, often designed around
context.Context as well. Log and WithSpan APIs recognize the task
information embedded in the context and record it in the trace as
well. That allows the Go execution tracer to associate and group
the spans and log messages based on the task information.

In order to create a Task,

   ctx, end := trace.NewContext(ctx, "myTask")
   defer end()

The Go execution tracer measures the time between the task created
and the task ended for the task latency.

More discussion history in golang.org/cl/59572.

Update #16619

R=go1.11

Change-Id: I59a937048294dafd23a75cf1723c6db461b193cd
Reviewed-on: https://go-review.googlesource.com/63274
Reviewed-by: Austin Clements <austin@google.com>
src/cmd/go/internal/work/gc.go
src/go/build/deps_test.go
src/internal/trace/parser.go
src/runtime/trace.go
src/runtime/trace/annotation.go [new file with mode: 0644]
src/runtime/trace/trace.go