diff --git a/home/config.go b/home/config.go index d0fc6396..3964d3c6 100644 --- a/home/config.go +++ b/home/config.go @@ -47,6 +47,12 @@ type configuration struct { RlimitNoFile uint `yaml:"rlimit_nofile"` // Maximum number of opened fd's per process (0: default) DebugPProf bool `yaml:"debug_pprof"` // Enable pprof HTTP server on port 6060 + // The value for SetGCPercent. + // SetGCPercent sets the garbage collection target percentage: + // a collection is triggered when the ratio of freshly allocated data + // to live data remaining after the previous collection reaches this percentage. + MemGCPercent uint8 `yaml:"mem_gc_percentage"` + // TTL for a web session (in hours) // An active session is automatically refreshed once a day. WebSessionTTLHours uint32 `yaml:"web_session_ttl"` diff --git a/home/home.go b/home/home.go index b9d7a760..37087f5a 100644 --- a/home/home.go +++ b/home/home.go @@ -13,6 +13,7 @@ import ( "os/signal" "path/filepath" "runtime" + "runtime/debug" "strconv" "sync" "syscall" @@ -209,6 +210,11 @@ func run(args options) { log.Info("Configuration file is OK") os.Exit(0) } + + if config.MemGCPercent != 0 { + debug.SetGCPercent(int(config.MemGCPercent)) + log.Debug("Set SetGCPercent=%d", config.MemGCPercent) + } } // 'clients' module uses 'dnsfilter' module's static data (dnsfilter.BlockedSvcKnown()),