]> Cypherpunks repositories - gostls13.git/commit
internal/trace: fix GC time computation of short goroutines
authorHana Kim <hakim@google.com>
Thu, 15 Mar 2018 01:27:25 +0000 (21:27 -0400)
committerHyang-Ah Hana Kim <hyangah@gmail.com>
Thu, 15 Mar 2018 19:53:42 +0000 (19:53 +0000)
commit61f92ee56abbc6c6af317e4b867b4214c31ae4c7
tree377b3864edefffe7e53184d6818e0332c71cc0ac
parentcceee685be4436c8fd417e9c248429b8625b978d
internal/trace: fix GC time computation of short goroutines

Goroutine analysis reports the sum of all overlapping GC intervals as
the GCTime of a goroutine. The computation is done by adding the length
of a completed GC interval to 'active' goroutines when processing the
corresponding EvGCDone event. This change fixes the two corner cases
the current implementation ignores:

1) Goroutine that ends during GC. Previously, this goroutine was ignored
and GC time was undercounted. We handle this case by setting the
gcStartTime only when GC is active and handling non-zero gcStartTime
when processing EvGoStop and EvGoStart.

2) Goroutine that starts during GC. Previously, the entire GC interval
length was added to the Goroutine's GCTime which resulted in overcount
of GC time. We handle this case by computing the length of overlapped
period precisely.

Change-Id: Ifa8e82672ec341b5ff87837209f4311fa7262b7f
Reviewed-on: https://go-review.googlesource.com/100842
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/internal/trace/goroutines.go