mirror of
https://github.com/safing/portmaster
synced 2025-04-23 04:19:10 +00:00
66 lines
1.6 KiB
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())
|
|
}
|