From: Hana Kim Date: Fri, 26 Jan 2018 15:28:10 +0000 (-0500) Subject: cmd/trace: include P info in goroutine slices X-Git-Tag: go1.11beta1~1503 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=3e1ac1b01746cca385281cdaef8a4c3c35a2efac;p=gostls13.git cmd/trace: include P info in goroutine slices 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 --- diff --git a/src/cmd/trace/trace.go b/src/cmd/trace/trace.go index 2832b90b82..6fa459c7c2 100644 --- a/src/cmd/trace/trace.go +++ b/src/cmd/trace/trace.go @@ -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 {