• Austin Clements's avatar
    runtime: report GC CPU utilization in MemStats · 23e4744c
    Austin Clements authored
    This adds a GCCPUFraction field to MemStats that reports the
    cumulative fraction of the program's execution time spent in the
    garbage collector. This is equivalent to the utilization percent shown
    in the gctrace output and makes this available programmatically.
    
    This does make one small effect on the gctrace output: we now report
    the duration of mark termination up to just before the final
    start-the-world, rather than up to just after. However, unlike
    stop-the-world, I don't believe there's any way that start-the-world
    can block, so it should take negligible time.
    
    While there are many statistics one might want to expose via MemStats,
    this is one of the few that will undoubtedly remain meaningful
    regardless of future changes to the memory system.
    
    The diff for this change is larger than the actual change. Mostly it
    lifts the code for computing the GC CPU utilization out of the
    debug.gctrace path.
    
    Updates #10323.
    
    Change-Id: I0f7dc3fdcafe95e8d1233ceb79de606b48acd989
    Reviewed-on: https://go-review.googlesource.com/12844Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    23e4744c
mgc.go 55.7 KB