cmd/geth: add memory stat collection too

pull/1321/head
Péter Szilágyi 10 years ago
parent c6e2af14c0
commit c0343c8f17
  1. 24
      cmd/geth/main.go

@ -30,6 +30,7 @@ import (
"runtime" "runtime"
"strconv" "strconv"
"strings" "strings"
"time"
"github.com/codegangsta/cli" "github.com/codegangsta/cli"
"github.com/ethereum/ethash" "github.com/ethereum/ethash"
@ -42,6 +43,7 @@ import (
"github.com/ethereum/go-ethereum/rpc/comms" "github.com/ethereum/go-ethereum/rpc/comms"
"github.com/mattn/go-colorable" "github.com/mattn/go-colorable"
"github.com/mattn/go-isatty" "github.com/mattn/go-isatty"
"github.com/rcrowley/go-metrics"
) )
const ( const (
@ -285,6 +287,28 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
} }
return nil return nil
} }
// Start system runtime metrics collection
go func() {
used := metrics.GetOrRegisterMeter("system/memory/used", metrics.DefaultRegistry)
total := metrics.GetOrRegisterMeter("system/memory/total", metrics.DefaultRegistry)
mallocs := metrics.GetOrRegisterMeter("system/memory/mallocs", metrics.DefaultRegistry)
frees := metrics.GetOrRegisterMeter("system/memory/frees", metrics.DefaultRegistry)
stats := make([]*runtime.MemStats, 2)
for i := 0; i < len(stats); i++ {
stats[i] = new(runtime.MemStats)
}
for i := 1; ; i++ {
runtime.ReadMemStats(stats[i%2])
used.Mark(int64(stats[i%2].Alloc - stats[(i-1)%2].Alloc))
total.Mark(int64(stats[i%2].TotalAlloc - stats[(i-1)%2].TotalAlloc))
mallocs.Mark(int64(stats[i%2].Mallocs - stats[(i-1)%2].Mallocs))
frees.Mark(int64(stats[i%2].Frees - stats[(i-1)%2].Frees))
time.Sleep(3 * time.Second)
}
}()
} }
func main() { func main() {

Loading…
Cancel
Save