]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/trace: include P info in goroutine slices
authorHana Kim <hakim@google.com>
Fri, 26 Jan 2018 15:28:10 +0000 (10:28 -0500)
committerHyang-Ah Hana Kim <hyangah@gmail.com>
Wed, 21 Feb 2018 20:14:30 +0000 (20:14 +0000)
The task-oriented trace view presents the execution trace organized
based on goroutines. Often, which P a goroutine was running on is
useful, so this CL includes the P ids in the goroutine execution slices.

R=go1.11

Change-Id: I96539bf8215e5c1cd8cc997a90204f57347c48c8
Reviewed-on: https://go-review.googlesource.com/90221
Reviewed-by: Heschi Kreinick <heschi@google.com>
src/cmd/trace/trace.go

index 2832b90b82e2b4fe72607b0620cdddfabd7d29c9..6fa459c7c23a8d8f529c33110735d5c605aefe2c 100644 (file)
@@ -726,8 +726,17 @@ func (ctx *traceContext) emitSlice(ev *trace.Event, name string) *ViewerEvent {
                Stack:    ctx.stack(ev.Stk),
                EndStack: ctx.stack(ev.Link.Stk),
        }
+
        // grey out non-overlapping events if the event is not a global event (ev.G == 0)
        if ctx.mode == taskTraceview && ev.G != 0 {
+               // include P information.
+               if t := ev.Type; t == trace.EvGoStart || t == trace.EvGoStartLabel {
+                       type Arg struct {
+                               P int
+                       }
+                       sl.Arg = &Arg{P: ev.P}
+               }
+               // grey out non-overlapping events.
                overlapping := false
                for _, task := range ctx.tasks {
                        if _, overlapped := task.overlappingDuration(ev); overlapped {