1
0

debug_unix.go 449 B

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