minio/vendor/github.com/pkg/profile
Anis Elleuch 9531cddb06 Add Profiler Admin API (#6463)
Two handlers are added to admin API to enable profiling and disable
profiling of a server in a standalone mode, or all nodes in the
distributed mode.

/minio/admin/profiling/start/{cpu,block,mem}:
  - Start profiling and return starting JSON results, e.g. one
    node is offline.

/minio/admin/profiling/download:
  - Stop the on-going profiling task
  - Stream a zip file which contains all profiling files that can
    be later inspected by go tool pprof
2018-09-18 16:46:35 -07:00
..
AUTHORS server: Enable server profiling as needed. (#1565) 2016-05-09 16:18:56 -07:00
LICENSE server: Enable server profiling as needed. (#1565) 2016-05-09 16:18:56 -07:00
mutex17.go Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00
mutex.go Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00
profile.go Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00
README.md Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00
trace16.go Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00
trace.go Add Profiler Admin API (#6463) 2018-09-18 16:46:35 -07:00

profile

Simple profiling support package for Go

Build Status GoDoc

installation

go get github.com/pkg/profile

usage

Enabling profiling in your application is as simple as one line at the top of your main function

import "github.com/pkg/profile"

func main() {
    defer profile.Start().Stop()
    ...
}

options

What to profile is controlled by config value passed to profile.Start. By default CPU profiling is enabled.

import "github.com/pkg/profile"

func main() {
    // p.Stop() must be called before the program exits to
    // ensure profiling information is written to disk.
    p := profile.Start(profile.MemProfile, profile.ProfilePath("."), profile.NoShutdownHook)
    ...
}

Several convenience package level values are provided for cpu, memory, and block (contention) profiling.

For more complex options, consult the documentation.

contributing

We welcome pull requests, bug fixes and issue reports.

Before proposing a change, please discuss it first by raising an issue.