Browse Source

types/logger: move RusagePrefixLog to logger package, disable by default

The RusagePrefixLog is rarely useful, hasn't been useful in a long
time, is rarely the measurement we need, and is pretty spammy (and
syscall-heavy). Disable it by default. We can enable it when we're
debugging memory.
Brad Fitzpatrick 5 years ago
parent
commit
86c271caba

+ 5 - 1
cmd/tailscaled/tailscaled.go

@@ -19,6 +19,7 @@ import (
 	"os/signal"
 	"runtime"
 	"runtime/debug"
+	"strconv"
 	"syscall"
 	"time"
 
@@ -115,7 +116,10 @@ func run() error {
 		pol.Shutdown(ctx)
 	}()
 
-	logf := wgengine.RusagePrefixLog(log.Printf)
+	var logf logger.Logf = log.Printf
+	if v, _ := strconv.ParseBool(os.Getenv("TS_DEBUG_MEMORY")); v {
+		logf = logger.RusagePrefixLog(logf)
+	}
 	logf = logger.RateLimitedFn(logf, 5*time.Second, 5, 100)
 
 	if args.cleanup {

+ 2 - 4
wgengine/rusage.go → types/logger/rusage.go

@@ -2,19 +2,17 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package wgengine
+package logger
 
 import (
 	"fmt"
 	"runtime"
-
-	"tailscale.com/types/logger"
 )
 
 // RusagePrefixLog returns a Logf func wrapping the provided logf func that adds
 // a prefixed log message to each line with the current binary memory usage
 // and max RSS.
-func RusagePrefixLog(logf logger.Logf) logger.Logf {
+func RusagePrefixLog(logf Logf) Logf {
 	return func(f string, argv ...interface{}) {
 		var m runtime.MemStats
 		runtime.ReadMemStats(&m)

+ 1 - 1
wgengine/rusage_nowindows.go → types/logger/rusage_nowindows.go

@@ -4,7 +4,7 @@
 
 // +build !windows
 
-package wgengine
+package logger
 
 import (
 	"runtime"

+ 1 - 1
wgengine/rusage_windows.go → types/logger/rusage_windows.go

@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package wgengine
+package logger
 
 func rusageMaxRSS() float64 {
 	// TODO(apenwarr): Substitute Windows equivalent of Getrusage() here.