()
| 36 | } |
| 37 | |
| 38 | func GetUsage() (*Usage, error) { |
| 39 | var usage syscall.Rusage |
| 40 | if err := syscall.Getrusage(syscall.RUSAGE_SELF, &usage); err != nil { |
| 41 | return nil, errors.Trace(err) |
| 42 | } |
| 43 | u := &Usage{} |
| 44 | u.Utime = time.Duration(usage.Utime.Nano()) |
| 45 | u.Stime = time.Duration(usage.Stime.Nano()) |
| 46 | |
| 47 | unit := 1024 * int64(C.sysconf(C._SC_CLK_TCK)) |
| 48 | |
| 49 | u.MaxRss = usage.Maxrss |
| 50 | u.Ixrss = unit * usage.Ixrss |
| 51 | u.Idrss = unit * usage.Idrss |
| 52 | u.Isrss = unit * usage.Isrss |
| 53 | return u, nil |
| 54 | } |