feat: add set oom_score_adj

This commit is contained in:
SunBK201 2025-12-08 21:32:07 +08:00
parent b311fa1572
commit 12c19f9817
3 changed files with 27 additions and 5 deletions

View File

@ -1,6 +1,6 @@
//go:build !linux
package usergroup
package daemon
import (
"github.com/sunbk201/ua3f/internal/config"
@ -9,3 +9,7 @@ import (
func SetUserGroup(cfg *config.Config) error {
return nil
}
func SetOOMScoreAdj(value int) error {
return nil
}

View File

@ -1,6 +1,6 @@
//go:build linux
package usergroup
package daemon
import (
"bufio"
@ -15,6 +15,21 @@ import (
"github.com/sunbk201/ua3f/internal/config"
)
func SetOOMScoreAdj(value int) error {
if value < -1000 || value > 1000 {
return fmt.Errorf("OOM score adj value %d out of range (-1000 to 1000)", value)
}
f, err := os.OpenFile("/proc/self/oom_score_adj", os.O_WRONLY, 0)
if err != nil {
return fmt.Errorf("failed to open /proc/self/oom_score_adj: %w", err)
}
defer f.Close()
if _, err := f.WriteString(strconv.Itoa(value)); err != nil {
return fmt.Errorf("failed to write to /proc/self/oom_score_adj: %w", err)
}
return nil
}
func SetUserGroup(cfg *config.Config) error {
groupName := determineGroup(cfg.ServerMode)
if groupName == "" {

View File

@ -8,11 +8,11 @@ import (
"syscall"
"github.com/sunbk201/ua3f/internal/config"
"github.com/sunbk201/ua3f/internal/daemon"
"github.com/sunbk201/ua3f/internal/log"
"github.com/sunbk201/ua3f/internal/server"
"github.com/sunbk201/ua3f/internal/server/desync"
"github.com/sunbk201/ua3f/internal/server/netlink"
"github.com/sunbk201/ua3f/internal/usergroup"
)
var (
@ -32,10 +32,13 @@ func main() {
log.LogHeader(appVersion, cfg)
if err := usergroup.SetUserGroup(cfg); err != nil {
slog.Error("usergroup.SetUserGroup", slog.Any("error", err))
if err := daemon.SetUserGroup(cfg); err != nil {
slog.Error("daemon.SetUserGroup", slog.Any("error", err))
return
}
if err := daemon.SetOOMScoreAdj(-800); err != nil {
slog.Warn("daemon.SetOOMScoreAdj", slog.Any("error", err))
}
helper := netlink.New(cfg)
addShutdown("helper.Close", helper.Close)