Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Measuring memory usage of executable run using golang

Tags:

memory

go

How do I measure the amount of memory used by an executable which I run through the os/exec package in Golang? Is it better to do this through the OS itself?

like image 327
Samarth Wahal Avatar asked Dec 23 '14 18:12

Samarth Wahal


1 Answers

You need to do this through the OS itself. If you are on plan9 or posix, Go will return the usage values from the OS for you in the structure returned by ProcessState.SysUsage().

cmd := exec.Command("command", "arg1", "arg2")
err := cmd.Run()
if err != nil {
    log.Fatal(err)
}
// check this type assertion to avoid a panic
fmt.Println("MaxRSS:", cmd.ProcessState.SysUsage().(*syscall.Rusage).Maxrss)

Note: different platforms may return this in bytes or kilobytes. Check man getrusage for details.

like image 153
JimB Avatar answered Nov 10 '22 14:11

JimB