Skip to content

jmptrader/goinfo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

goinfo

Package providing a proc-like interface to monitor running Go processes

Dependencies

goinfo requires go-fuse to implement the proc-like file system. Due to this dependency, goinfo currently only works on Linux.

To install go-fuse you can simply run

$ go get github.com/hanwen/go-fuse

If you use goat, a Goatfile is included in the project already.

Usage

The project is not well documented right now, but now that I have an initial working version, I will be fleshing out the godocs soon. In the mean time:

To start simply import goinfo and start the info interface at a given mount point:

package main

import "github.com/betamike/goinfo"

func main() {
  goinfo.Start("~/go/myapp")
  defer goinfo.StopAll()
  //App logic
}

This will provide the following interface at ~/go/myapp:

|- myapp
  |- mem            // memory statistics (all found in runtime.MemStats)
    |- genmem       // general memory stats "<MemStats.Alloc> <MemStats.TotalAlloc> <MemStats.Sys> <Memstats.Lookups> <MemStats.Mallocs> <MemStats.Frees>" 
    |- heap         // heap memory stats "<MemStats.HeapAlloc> <MemStats.HeapSys> <MemStats.HeapIdle> <MemStats.HeapInuse> <MemStats.HeapReleased> <MemStats.HeapObjects>"
    |- stack        // stack memory stats "<MemStats.StackInuse> <MemStats.StackSys>"
    |- mspan        // mspan memory stats "<MemStats.MSpanInuse> <MemStats.MSpanSys>"
    |- mcache       // mcache memory stats "<MemStats.MCacheInuse> <MemStats.MCacheSys>"
    |- buckethash   // bucket hash info "<MemStats.BuckHashSys>"
    |- gc           // garbage collection stats  "<MemStats.NextGC> <MemStats.LastGC> <MemStats.PauseTotalNs> <MemStats.NumGC> <MemStats.EnableGC> <MemStats.DebugGC>"
  |- st
    |- stacktrace   // the current stacktrace of all goroutines (see runtime.Stack())

Check out the runtime package for more info.

Acessing this information is a simple as accessing a file:

$ cat ~/go/myapp/mem/genmem
817232 861568 271175600 65 541 146    

License

This package is distributed under the MIT license. See the LICENSE file for more details.

About

Package providing a proc-like interface to monitor running Go processes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%