aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/traceevent.go
diff options
context:
space:
mode:
authorMichael Anthony Knyszek <mknyszek@google.com>2025-01-29 17:17:04 +0000
committerGopher Robot <gobot@golang.org>2025-02-11 11:23:24 -0800
commitb5f34aa4abc1ae49b9f97355deb5ab097d0c68a9 (patch)
treee5ac2e62164dcc1478116668f6ada07e3d77a31b /src/runtime/traceevent.go
parent0158ddad9893ea1ab332be39f192aefdbd7b65c8 (diff)
downloadgo-b5f34aa4abc1ae49b9f97355deb5ab097d0c68a9.tar.xz
runtime: use internal/trace/tracev2 definitions
This change deduplicates trace wire format definitions between the runtime and the trace parser by making the internal/trace/tracev2 package the source of truth. Change-Id: Ia0721d3484a80417e40ac473ec32870bee73df09 Reviewed-on: https://go-review.googlesource.com/c/go/+/644221 Auto-Submit: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Pratt <mpratt@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Diffstat (limited to 'src/runtime/traceevent.go')
-rw-r--r--src/runtime/traceevent.go89
1 files changed, 4 insertions, 85 deletions
diff --git a/src/runtime/traceevent.go b/src/runtime/traceevent.go
index 51d2368842..9d1a93d3f9 100644
--- a/src/runtime/traceevent.go
+++ b/src/runtime/traceevent.go
@@ -9,88 +9,7 @@ package runtime
import (
"internal/abi"
"internal/runtime/sys"
-)
-
-// Event types in the trace, args are given in square brackets.
-//
-// Naming scheme:
-// - Time range event pairs have suffixes "Begin" and "End".
-// - "Start", "Stop", "Create", "Destroy", "Block", "Unblock"
-// are suffixes reserved for scheduling resources.
-//
-// NOTE: If you add an event type, make sure you also update all
-// tables in this file!
-type traceEv uint8
-
-const (
- traceEvNone traceEv = iota // unused
-
- // Structural events.
- traceEvEventBatch // start of per-M batch of events [generation, M ID, timestamp, batch length]
- traceEvStacks // start of a section of the stack table [...traceEvStack]
- traceEvStack // stack table entry [ID, ...{PC, func string ID, file string ID, line #}]
- traceEvStrings // start of a section of the string dictionary [...traceEvString]
- traceEvString // string dictionary entry [ID, length, string]
- traceEvCPUSamples // start of a section of CPU samples [...traceEvCPUSample]
- traceEvCPUSample // CPU profiling sample [timestamp, M ID, P ID, goroutine ID, stack ID]
- traceEvFrequency // timestamp units per sec [freq]
-
- // Procs.
- traceEvProcsChange // current value of GOMAXPROCS [timestamp, GOMAXPROCS, stack ID]
- traceEvProcStart // start of P [timestamp, P ID, P seq]
- traceEvProcStop // stop of P [timestamp]
- traceEvProcSteal // P was stolen [timestamp, P ID, P seq, M ID]
- traceEvProcStatus // P status at the start of a generation [timestamp, P ID, status]
-
- // Goroutines.
- traceEvGoCreate // goroutine creation [timestamp, new goroutine ID, new stack ID, stack ID]
- traceEvGoCreateSyscall // goroutine appears in syscall (cgo callback) [timestamp, new goroutine ID]
- traceEvGoStart // goroutine starts running [timestamp, goroutine ID, goroutine seq]
- traceEvGoDestroy // goroutine ends [timestamp]
- traceEvGoDestroySyscall // goroutine ends in syscall (cgo callback) [timestamp]
- traceEvGoStop // goroutine yields its time, but is runnable [timestamp, reason, stack ID]
- traceEvGoBlock // goroutine blocks [timestamp, reason, stack ID]
- traceEvGoUnblock // goroutine is unblocked [timestamp, goroutine ID, goroutine seq, stack ID]
- traceEvGoSyscallBegin // syscall enter [timestamp, P seq, stack ID]
- traceEvGoSyscallEnd // syscall exit [timestamp]
- traceEvGoSyscallEndBlocked // syscall exit and it blocked at some point [timestamp]
- traceEvGoStatus // goroutine status at the start of a generation [timestamp, goroutine ID, M ID, status]
-
- // STW.
- traceEvSTWBegin // STW start [timestamp, kind]
- traceEvSTWEnd // STW done [timestamp]
-
- // GC events.
- traceEvGCActive // GC active [timestamp, seq]
- traceEvGCBegin // GC start [timestamp, seq, stack ID]
- traceEvGCEnd // GC done [timestamp, seq]
- traceEvGCSweepActive // GC sweep active [timestamp, P ID]
- traceEvGCSweepBegin // GC sweep start [timestamp, stack ID]
- traceEvGCSweepEnd // GC sweep done [timestamp, swept bytes, reclaimed bytes]
- traceEvGCMarkAssistActive // GC mark assist active [timestamp, goroutine ID]
- traceEvGCMarkAssistBegin // GC mark assist start [timestamp, stack ID]
- traceEvGCMarkAssistEnd // GC mark assist done [timestamp]
- traceEvHeapAlloc // gcController.heapLive change [timestamp, heap alloc in bytes]
- traceEvHeapGoal // gcController.heapGoal() change [timestamp, heap goal in bytes]
-
- // Annotations.
- traceEvGoLabel // apply string label to current running goroutine [timestamp, label string ID]
- traceEvUserTaskBegin // trace.NewTask [timestamp, internal task ID, internal parent task ID, name string ID, stack ID]
- traceEvUserTaskEnd // end of a task [timestamp, internal task ID, stack ID]
- traceEvUserRegionBegin // trace.{Start,With}Region [timestamp, internal task ID, name string ID, stack ID]
- traceEvUserRegionEnd // trace.{End,With}Region [timestamp, internal task ID, name string ID, stack ID]
- traceEvUserLog // trace.Log [timestamp, internal task ID, key string ID, stack, value string ID]
-
- // Coroutines.
- traceEvGoSwitch // goroutine switch (coroswitch) [timestamp, goroutine ID, goroutine seq]
- traceEvGoSwitchDestroy // goroutine switch and destroy [timestamp, goroutine ID, goroutine seq]
- traceEvGoCreateBlocked // goroutine creation (starts blocked) [timestamp, new goroutine ID, new stack ID, stack ID]
-
- // GoStatus with stack.
- traceEvGoStatusStack // goroutine status at the start of a generation, with a stack [timestamp, goroutine ID, M ID, status, stack ID]
-
- // Batch event for an experimental batch with a custom format.
- traceEvExperimentalBatch // start of extra data [experiment ID, generation, M ID, timestamp, batch length, batch data...]
+ "internal/trace/tracev2"
)
// traceArg is a simple wrapper type to help ensure that arguments passed
@@ -117,8 +36,8 @@ type traceEventWriter struct {
// been Runnable before a GoStart). Otherwise, callers can query the status of either the goroutine
// or P and pass the appropriate status.
//
-// In this case, the default status should be traceGoBad or traceProcBad to help identify bugs sooner.
-func (tl traceLocker) eventWriter(goStatus traceGoStatus, procStatus traceProcStatus) traceEventWriter {
+// In this case, the default status should be tracev2.GoBad or tracev2.ProcBad to help identify bugs sooner.
+func (tl traceLocker) eventWriter(goStatus tracev2.GoStatus, procStatus tracev2.ProcStatus) traceEventWriter {
if pp := tl.mp.p.ptr(); pp != nil && !pp.trace.statusWasTraced(tl.gen) && pp.trace.acquireStatus(tl.gen) {
tl.writer().writeProcStatus(uint64(pp.id), procStatus, pp.trace.inSweep).end()
}
@@ -129,7 +48,7 @@ func (tl traceLocker) eventWriter(goStatus traceGoStatus, procStatus traceProcSt
}
// event writes out a trace event.
-func (e traceEventWriter) event(ev traceEv, args ...traceArg) {
+func (e traceEventWriter) event(ev tracev2.EventType, args ...traceArg) {
e.tl.writer().event(ev, args...).end()
}