safing-portmaster/cmds/hub/main.go

66 lines
1.6 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"runtime"
"github.com/safing/portbase/info"
"github.com/safing/portbase/metrics"
"github.com/safing/portbase/modules"
"github.com/safing/portbase/run"
_ "github.com/safing/portmaster/service/core/base"
_ "github.com/safing/portmaster/service/ui"
"github.com/safing/portmaster/service/updates"
"github.com/safing/portmaster/service/updates/helper"
_ "github.com/safing/portmaster/spn/captain"
"github.com/safing/portmaster/spn/conf"
)
func init() {
flag.BoolVar(&updates.RebootOnRestart, "reboot-on-restart", false, "reboot server on auto-upgrade")
}
func main() {
info.Set("SPN Hub", "0.7.6", "AGPLv3", true)
// Configure metrics.
_ = metrics.SetNamespace("hub")
// Configure updating.
updates.UserAgent = fmt.Sprintf("SPN Hub (%s %s)", runtime.GOOS, runtime.GOARCH)
helper.IntelOnly()
// Configure SPN mode.
conf.EnablePublicHub(true)
conf.EnableClient(false)
// Disable module management, as we want to start all modules.
modules.DisableModuleManagement()
// Configure microtask threshold.
// Scale with CPU/GOMAXPROCS count, but keep a baseline and minimum:
// CPUs -> MicroTasks
// 0 -> 8 (increased to minimum)
// 1 -> 8 (increased to minimum)
// 2 -> 8
// 3 -> 10
// 4 -> 12
// 8 -> 20
// 16 -> 36
//
// Start with number of GOMAXPROCS.
microTasksThreshold := runtime.GOMAXPROCS(0) * 2
// Use at least 4 microtasks based on GOMAXPROCS.
if microTasksThreshold < 4 {
microTasksThreshold = 4
}
// Add a 4 microtask baseline.
microTasksThreshold += 4
// Set threshold.
modules.SetMaxConcurrentMicroTasks(microTasksThreshold)
// Start.
os.Exit(run.Run())
}