• Austin Clements's avatar
    runtime,cmd/trace: trace GC STW events · b0392159
    Austin Clements authored
    Right now we only kind of sort of trace GC STW events. We emit events
    around mark termination, but those start well after stopping the world
    and end before starting it again, and we don't emit any events for
    sweep termination.
    
    Fix this by generalizing EvGCScanStart/EvGCScanDone. These were
    already re-purposed to indicate mark termination (despite the names).
    This commit renames them to EvGCSTWStart/EvGCSTWDone, adds an argument
    to indicate the STW reason, and shuffles the runtime to generate them
    right before stopping the world and right after starting the world,
    respectively.
    
    These events will make it possible to generate precise minimum mutator
    utilization (MMU) graphs and could be useful in detecting
    non-preemptible goroutines (e.g., #20792).
    
    Change-Id: If95783f370781d8ef66addd94886028103a7c26f
    Reviewed-on: https://go-review.googlesource.com/55411Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
    b0392159
trace.go 33.6 KB