mirror of https://github.com/poanetwork/gecko.git
lock, mem and CPU profiles write to a fixed filename
This commit is contained in:
parent
c7356a581d
commit
fc40ad802f
|
@ -10,6 +10,15 @@ import (
|
|||
"runtime/pprof"
|
||||
)
|
||||
|
||||
const (
|
||||
// Name of file that CPU profile is written to when StartCPUProfiler called
|
||||
cpuProfileFile = "cpu.profile"
|
||||
// Name of file that memory profile is written to when MemoryProfile called
|
||||
memProfileFile = "mem.profile"
|
||||
// Name of file that lock profile is written to
|
||||
lockProfileFile = "lock.profile"
|
||||
)
|
||||
|
||||
var (
|
||||
errCPUProfilerRunning = errors.New("cpu profiler already running")
|
||||
errCPUProfilerNotRunning = errors.New("cpu profiler doesn't exist")
|
||||
|
@ -20,12 +29,12 @@ var (
|
|||
type Performance struct{ cpuProfileFile *os.File }
|
||||
|
||||
// StartCPUProfiler starts measuring the cpu utilization of this node
|
||||
func (p *Performance) StartCPUProfiler(filename string) error {
|
||||
func (p *Performance) StartCPUProfiler() error {
|
||||
if p.cpuProfileFile != nil {
|
||||
return errCPUProfilerRunning
|
||||
}
|
||||
|
||||
file, err := os.Create(filename)
|
||||
file, err := os.Create(cpuProfileFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -52,8 +61,8 @@ func (p *Performance) StopCPUProfiler() error {
|
|||
}
|
||||
|
||||
// MemoryProfile dumps the current memory utilization of this node
|
||||
func (p *Performance) MemoryProfile(filename string) error {
|
||||
file, err := os.Create(filename)
|
||||
func (p *Performance) MemoryProfile() error {
|
||||
file, err := os.Create(memProfileFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -66,8 +75,8 @@ func (p *Performance) MemoryProfile(filename string) error {
|
|||
}
|
||||
|
||||
// LockProfile dumps the current lock statistics of this node
|
||||
func (p *Performance) LockProfile(filename string) error {
|
||||
file, err := os.Create(filename)
|
||||
func (p *Performance) LockProfile() error {
|
||||
file, err := os.Create(lockProfileFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -39,21 +39,16 @@ func NewService(log logging.Logger, chainManager chains.Manager, peers network.N
|
|||
return &common.HTTPHandler{Handler: newServer}
|
||||
}
|
||||
|
||||
// StartCPUProfilerArgs are the arguments for calling StartCPUProfiler
|
||||
type StartCPUProfilerArgs struct {
|
||||
Filename string `json:"filename"`
|
||||
}
|
||||
|
||||
// StartCPUProfilerReply are the results from calling StartCPUProfiler
|
||||
type StartCPUProfilerReply struct {
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
// StartCPUProfiler starts a cpu profile writing to the specified file
|
||||
func (service *Admin) StartCPUProfiler(_ *http.Request, args *StartCPUProfilerArgs, reply *StartCPUProfilerReply) error {
|
||||
service.log.Info("Admin: StartCPUProfiler called with %s", args.Filename)
|
||||
func (service *Admin) StartCPUProfiler(_ *http.Request, args *struct{}, reply *StartCPUProfilerReply) error {
|
||||
service.log.Info("Admin: StartCPUProfiler called")
|
||||
reply.Success = true
|
||||
return service.performance.StartCPUProfiler(args.Filename)
|
||||
return service.performance.StartCPUProfiler()
|
||||
}
|
||||
|
||||
// StopCPUProfilerReply are the results from calling StopCPUProfiler
|
||||
|
@ -68,26 +63,16 @@ func (service *Admin) StopCPUProfiler(_ *http.Request, _ *struct{}, reply *StopC
|
|||
return service.performance.StopCPUProfiler()
|
||||
}
|
||||
|
||||
// MemoryProfileArgs are the arguments for calling MemoryProfile
|
||||
type MemoryProfileArgs struct {
|
||||
Filename string `json:"filename"`
|
||||
}
|
||||
|
||||
// MemoryProfileReply are the results from calling MemoryProfile
|
||||
type MemoryProfileReply struct {
|
||||
Success bool `json:"success"`
|
||||
}
|
||||
|
||||
// MemoryProfile runs a memory profile writing to the specified file
|
||||
func (service *Admin) MemoryProfile(_ *http.Request, args *MemoryProfileArgs, reply *MemoryProfileReply) error {
|
||||
service.log.Info("Admin: MemoryProfile called with %s", args.Filename)
|
||||
func (service *Admin) MemoryProfile(_ *http.Request, args *struct{}, reply *MemoryProfileReply) error {
|
||||
service.log.Info("Admin: MemoryProfile called")
|
||||
reply.Success = true
|
||||
return service.performance.MemoryProfile(args.Filename)
|
||||
}
|
||||
|
||||
// LockProfileArgs are the arguments for calling LockProfile
|
||||
type LockProfileArgs struct {
|
||||
Filename string `json:"filename"`
|
||||
return service.performance.MemoryProfile()
|
||||
}
|
||||
|
||||
// LockProfileReply are the results from calling LockProfile
|
||||
|
@ -96,10 +81,10 @@ type LockProfileReply struct {
|
|||
}
|
||||
|
||||
// LockProfile runs a mutex profile writing to the specified file
|
||||
func (service *Admin) LockProfile(_ *http.Request, args *LockProfileArgs, reply *LockProfileReply) error {
|
||||
service.log.Info("Admin: LockProfile called with %s", args.Filename)
|
||||
func (service *Admin) LockProfile(_ *http.Request, args *struct{}, reply *LockProfileReply) error {
|
||||
service.log.Info("Admin: LockProfile called")
|
||||
reply.Success = true
|
||||
return service.performance.LockProfile(args.Filename)
|
||||
return service.performance.LockProfile()
|
||||
}
|
||||
|
||||
// AliasArgs are the arguments for calling Alias
|
||||
|
|
Loading…
Reference in New Issue