فهرست منبع

Remove default GC tweak

This reverts the GC behavior to the Go default of triggering GC when the
heap has grown 100% compared to after the previous GC. We were setting
this to 25% to keep memory usage at a minimum, but it has a pretty
severe performance cost (especially when syncing large files) as we keep
triggering GC too often.

This documents the tweak in the `-help` message so users can decide for
themselves, and sticks to whatever the Go runtime developers thinks is
best for the default.
Jakob Borg 11 سال پیش
والد
کامیت
4beef5cc66
1فایلهای تغییر یافته به همراه5 افزوده شده و 6 حذف شده
  1. 5 6
      cmd/syncthing/main.go

+ 5 - 6
cmd/syncthing/main.go

@@ -19,7 +19,6 @@ import (
 	"path/filepath"
 	"path/filepath"
 	"regexp"
 	"regexp"
 	"runtime"
 	"runtime"
-	"runtime/debug"
 	"runtime/pprof"
 	"runtime/pprof"
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
@@ -170,7 +169,11 @@ are mostly useful for developers. Use with care.
  STNOUPGRADE     Disable automatic upgrades.
  STNOUPGRADE     Disable automatic upgrades.
 
 
  GOMAXPROCS      Set the maximum number of CPU cores to use. Defaults to all
  GOMAXPROCS      Set the maximum number of CPU cores to use. Defaults to all
-                 available CPU cores.`
+                 available CPU cores.
+
+ GOGC            Percentage of heap growth at which to trigger GC. Default is
+                 100. Lower numbers keep peak memory usage down, at the price
+                 of CPU usage (ie. performance).`
 )
 )
 
 
 // Command line and environment options
 // Command line and environment options
@@ -368,10 +371,6 @@ func main() {
 func syncthingMain() {
 func syncthingMain() {
 	var err error
 	var err error
 
 
-	if len(os.Getenv("GOGC")) == 0 {
-		debug.SetGCPercent(25)
-	}
-
 	if len(os.Getenv("GOMAXPROCS")) == 0 {
 	if len(os.Getenv("GOMAXPROCS")) == 0 {
 		runtime.GOMAXPROCS(runtime.NumCPU())
 		runtime.GOMAXPROCS(runtime.NumCPU())
 	}
 	}