]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: report MemStats.PauseEnd in UNIX time
authorAustin Clements <austin@google.com>
Tue, 30 Jun 2015 22:20:13 +0000 (18:20 -0400)
committerAustin Clements <austin@google.com>
Mon, 13 Jul 2015 23:32:02 +0000 (23:32 +0000)
Currently we report MemStats.PauseEnd in nanoseconds, but with no
particular 0 time. On Linux, the 0 time is when the host started. On
Darwin, it's the UNIX epoch. This is also inconsistent with the other
absolute time in MemStats, LastGC, which is always reported in
nanoseconds since 1970.

Fix PauseEnd so it's always reported in nanoseconds since 1970, like
LastGC.

Fixes one of the issues raised in #10323.

Change-Id: Ie2fe3169d45113992363a03b764f4e6c47e5c6a8
Reviewed-on: https://go-review.googlesource.com/11801
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
src/runtime/malloc_test.go
src/runtime/mgc.go

index 454b3c36fe816f6dcc47af0689e47ccfb3c98c5f..ecef9c93bc422baa7a8869f4d7c7f3be18fccecb 100644 (file)
@@ -44,6 +44,10 @@ func TestMemStats(t *testing.T) {
        if st.HeapIdle+st.HeapInuse != st.HeapSys {
                t.Fatalf("HeapIdle(%d) + HeapInuse(%d) should be equal to HeapSys(%d), but isn't.", st.HeapIdle, st.HeapInuse, st.HeapSys)
        }
+
+       if lpe := st.PauseEnd[int(st.NumGC+255)%len(st.PauseEnd)]; st.LastGC != lpe {
+               t.Fatalf("LastGC(%d) != last PauseEnd(%d)", st.LastGC, lpe)
+       }
 }
 
 func TestStringConcatenationAllocs(t *testing.T) {
index 5b6765b66401b2c98e72d0dc03959a2be4962028..8375d30bb8056b8cca150f36deaa9fd721617139 100644 (file)
@@ -1436,9 +1436,10 @@ func gcMark(start_time int64) {
        }
 
        t4 := nanotime()
-       atomicstore64(&memstats.last_gc, uint64(unixnanotime())) // must be Unix time to make sense to user
+       unixNow := unixnanotime()
+       atomicstore64(&memstats.last_gc, uint64(unixNow)) // must be Unix time to make sense to user
        memstats.pause_ns[memstats.numgc%uint32(len(memstats.pause_ns))] = uint64(t4 - t0)
-       memstats.pause_end[memstats.numgc%uint32(len(memstats.pause_end))] = uint64(t4)
+       memstats.pause_end[memstats.numgc%uint32(len(memstats.pause_end))] = uint64(unixNow)
        memstats.pause_total_ns += uint64(t4 - t0)
 }