}
type goroutineState struct {
- G trace.GoID // This goroutine.
- P trace.ProcID // Most recent P this goroutine ran on.
- M trace.ThreadID // Most recent M this goroutine ran on.
+ G trace.GoID // This goroutine.
+ P trace.ProcID // Most recent P this goroutine ran on.
+ M trace.ThreadID // Most recent M this goroutine ran on.
}
func newGoroutineState(g trace.GoID) *goroutineState {
}
}
- pct := float64(errors)/float64(runs)
+ pct := float64(errors) / float64(runs)
t.Logf("Errors: %d/%d = %f%%", errors, runs, 100*pct)
if pct > 0.25 {
t.Errorf("Error rate too high")
}
}
- pct := float64(errors)/float64(runs)
+ pct := float64(errors) / float64(runs)
t.Logf("Errors: %d/%d = %f%%", errors, runs, 100*pct)
if pct > 0.25 {
t.Errorf("Error rate too high")
palloc persistentAlloc // per-P to avoid mutex
// Per-P GC state
- gcAssistTime int64 // Nanoseconds in assistAlloc
+ gcAssistTime int64 // Nanoseconds in assistAlloc
gcFractionalMarkTime atomic.Int64 // Nanoseconds in fractional mark worker
// limiterEvent tracks events for the GC CPU limiter.
// sure to call checkdead().
midle listHeadManual // idle m's waiting for work
- nmidle int32 // number of idle m's waiting for work
- nmidlelocked int32 // number of locked m's waiting for work
- mnext int64 // number of m's that have been created and next M ID
- maxmcount int32 // maximum number of m's allowed (or die)
- nmsys int32 // number of system m's not counted for deadlock
- nmfreed int64 // cumulative number of freed m's
+ nmidle int32 // number of idle m's waiting for work
+ nmidlelocked int32 // number of locked m's waiting for work
+ mnext int64 // number of m's that have been created and next M ID
+ maxmcount int32 // maximum number of m's allowed (or die)
+ nmsys int32 // number of system m's not counted for deadlock
+ nmfreed int64 // cumulative number of freed m's
ngsys atomic.Int32 // number of system goroutines
nGsyscallNoP atomic.Int32 // number of goroutines in syscalls without a P