mirror of
https://github.com/SunBK201/UA3F.git
synced 2025-12-18 17:56:25 +00:00
feat: add set oom_score_adj
This commit is contained in:
parent
b311fa1572
commit
12c19f9817
@ -1,6 +1,6 @@
|
|||||||
//go:build !linux
|
//go:build !linux
|
||||||
|
|
||||||
package usergroup
|
package daemon
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/sunbk201/ua3f/internal/config"
|
"github.com/sunbk201/ua3f/internal/config"
|
||||||
@ -9,3 +9,7 @@ import (
|
|||||||
func SetUserGroup(cfg *config.Config) error {
|
func SetUserGroup(cfg *config.Config) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SetOOMScoreAdj(value int) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
//go:build linux
|
//go:build linux
|
||||||
|
|
||||||
package usergroup
|
package daemon
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
@ -15,6 +15,21 @@ import (
|
|||||||
"github.com/sunbk201/ua3f/internal/config"
|
"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 {
|
func SetUserGroup(cfg *config.Config) error {
|
||||||
groupName := determineGroup(cfg.ServerMode)
|
groupName := determineGroup(cfg.ServerMode)
|
||||||
if groupName == "" {
|
if groupName == "" {
|
||||||
@ -8,11 +8,11 @@ import (
|
|||||||
"syscall"
|
"syscall"
|
||||||
|
|
||||||
"github.com/sunbk201/ua3f/internal/config"
|
"github.com/sunbk201/ua3f/internal/config"
|
||||||
|
"github.com/sunbk201/ua3f/internal/daemon"
|
||||||
"github.com/sunbk201/ua3f/internal/log"
|
"github.com/sunbk201/ua3f/internal/log"
|
||||||
"github.com/sunbk201/ua3f/internal/server"
|
"github.com/sunbk201/ua3f/internal/server"
|
||||||
"github.com/sunbk201/ua3f/internal/server/desync"
|
"github.com/sunbk201/ua3f/internal/server/desync"
|
||||||
"github.com/sunbk201/ua3f/internal/server/netlink"
|
"github.com/sunbk201/ua3f/internal/server/netlink"
|
||||||
"github.com/sunbk201/ua3f/internal/usergroup"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -32,10 +32,13 @@ func main() {
|
|||||||
|
|
||||||
log.LogHeader(appVersion, cfg)
|
log.LogHeader(appVersion, cfg)
|
||||||
|
|
||||||
if err := usergroup.SetUserGroup(cfg); err != nil {
|
if err := daemon.SetUserGroup(cfg); err != nil {
|
||||||
slog.Error("usergroup.SetUserGroup", slog.Any("error", err))
|
slog.Error("daemon.SetUserGroup", slog.Any("error", err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if err := daemon.SetOOMScoreAdj(-800); err != nil {
|
||||||
|
slog.Warn("daemon.SetOOMScoreAdj", slog.Any("error", err))
|
||||||
|
}
|
||||||
|
|
||||||
helper := netlink.New(cfg)
|
helper := netlink.New(cfg)
|
||||||
addShutdown("helper.Close", helper.Close)
|
addShutdown("helper.Close", helper.Close)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user