rusage_syscall.go 563 B

1234567891011121314151617181920212223242526272829
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. //go:build !windows && !wasm && !plan9 && !tamago
  4. package logger
  5. import (
  6. "runtime"
  7. "golang.org/x/sys/unix"
  8. )
  9. func rusageMaxRSS() float64 {
  10. var ru unix.Rusage
  11. err := unix.Getrusage(unix.RUSAGE_SELF, &ru)
  12. if err != nil {
  13. return 0
  14. }
  15. rss := float64(ru.Maxrss)
  16. if runtime.GOOS == "darwin" || runtime.GOOS == "ios" {
  17. rss /= 1 << 20 // ru_maxrss is bytes on darwin
  18. } else {
  19. // ru_maxrss is kilobytes elsewhere (linux, openbsd, etc)
  20. rss /= 1 << 10
  21. }
  22. return rss
  23. }