cmd/geth: add memory stat collection too
This commit is contained in:
		@@ -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() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user