TotalAlloc dropped in runtime/metrics

146 views
Skip to first unread message

Marco A.

unread,
Apr 20, 2021, 2:12:47 PM4/20/21
to golang-nuts
Hi everyone,

I was considering using the new stable metrics interface with go 1.16 (https://golang.org/pkg/runtime/metrics/) for our program and I was also wondering why things like TotalAlloc (https://golang.org/pkg/runtime/#MemStats) had been dropped in the available metrics.

Any particular reasoning behind this?

Ian Lance Taylor

unread,
Apr 20, 2021, 3:09:15 PM4/20/21
to Marco A., mkny...@google.com, golang-nuts
[ + mknyszek ]
> --
> You received this message because you are subscribed to the Google Groups "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/c12d3534-d0b3-4567-9bc8-7cdcfb63c23cn%40googlegroups.com.

Michael Knyszek

unread,
Apr 20, 2021, 3:15:04 PM4/20/21
to Ian Lance Taylor, Marco A., golang-nuts
Oh gosh, I think TotalAlloc, Mallocs, and Frees are actually an oversight on my part. Sorry about that. They're very easy to add and I can probably even add them for this release.

Please do use the new runtime/metrics package!

Most of the other metrics should be there in some form (e.g. the divisions are a little different; they're meant to be more orthogonal to each other... GC pause latencies are now in a histogram) and new ones are going to be added in the next release and in the future. Also: today, it does not have the same stop-the-world penalty that ReadMemStats has, so I recommend it on that basis.

Michael Knyszek

unread,
Apr 20, 2021, 3:29:28 PM4/20/21
to Ian Lance Taylor, Marco A., golang-nuts
Oh, actually, you can compute Mallocs and Frees from allocs-by-size and frees-by-size (summing the total # of samples). You can only estimate TotalAlloc though, which is genuinely missing.

Marco A.

unread,
Apr 21, 2021, 5:32:16 AM4/21/21
to golang-nuts
Thanks Michael, do not worry about TotalAlloc.. we do have that metric to replace somehow but we might even think about dropping it completely.

I was honestly wondering if TotalAlloc (cumulative bytes allocated for heap objects) is a useful metric to have at all since Go uses garbage collection. I don't believe this could even be useful for heap fragmentation, but I'd like to hear your thoughts on the matter since you're obviously more experienced than me in this regard.

Michael Knyszek

unread,
Apr 29, 2021, 5:55:50 PM4/29/21
to Ian Lance Taylor, Marco A., golang-nuts
Hi Marco, https://go-review.googlesource.com/c/go/+/312431 just landed and should resolve the issue for Go 1.17.
Reply all
Reply to author
Forward
0 new messages