debug_linux.go 421 B

1234567891011121314151617181920212223
  1. package box
  2. import (
  3. "runtime"
  4. "syscall"
  5. )
  6. func rusageMaxRSS() float64 {
  7. ru := syscall.Rusage{}
  8. err := syscall.Getrusage(syscall.RUSAGE_SELF, &ru)
  9. if err != nil {
  10. return 0
  11. }
  12. rss := float64(ru.Maxrss)
  13. if runtime.GOOS == "darwin" || runtime.GOOS == "ios" {
  14. rss /= 1 << 20 // ru_maxrss is bytes on darwin
  15. } else {
  16. // ru_maxrss is kilobytes elsewhere (linux, openbsd, etc)
  17. rss /= 1 << 10
  18. }
  19. return rss
  20. }