diff --git a/audit/internal/webui/tasks.go b/audit/internal/webui/tasks.go index e04480b..4045a0e 100644 --- a/audit/internal/webui/tasks.go +++ b/audit/internal/webui/tasks.go @@ -5,6 +5,8 @@ import ( "encoding/json" "fmt" "net/http" + "os" + "path/filepath" "sort" "sync" "time" @@ -179,6 +181,7 @@ func (q *taskQueue) startWorker(opts *HandlerOptions) { func (q *taskQueue) worker() { for { <-q.trigger + setCPUGovernor("performance") for { q.mu.Lock() t := q.nextPending() @@ -211,6 +214,19 @@ func (q *taskQueue) worker() { q.prune() q.mu.Unlock() } + setCPUGovernor("powersave") + } +} + +// setCPUGovernor writes the given governor to all CPU scaling_governor sysfs files. +// Silently ignores errors (e.g. when cpufreq is not available). +func setCPUGovernor(governor string) { + matches, err := filepath.Glob("/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor") + if err != nil || len(matches) == 0 { + return + } + for _, path := range matches { + _ = os.WriteFile(path, []byte(governor), 0644) } } diff --git a/iso/overlay/etc/systemd/system/bee-cpuperf.service b/iso/overlay/etc/systemd/system/bee-cpuperf.service deleted file mode 100644 index 982c395..0000000 --- a/iso/overlay/etc/systemd/system/bee-cpuperf.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Set CPU governor to performance -DefaultDependencies=no -After=sysinit.target - -[Service] -Type=oneshot -ExecStart=/bin/sh -c 'for f in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f "$f" ] && echo performance > "$f"; done' -RemainAfterExit=yes - -[Install] -WantedBy=multi-user.target diff --git a/iso/overlay/etc/systemd/system/multi-user.target.wants/bee-cpuperf.service b/iso/overlay/etc/systemd/system/multi-user.target.wants/bee-cpuperf.service deleted file mode 120000 index e6447f2..0000000 --- a/iso/overlay/etc/systemd/system/multi-user.target.wants/bee-cpuperf.service +++ /dev/null @@ -1 +0,0 @@ -/etc/systemd/system/bee-cpuperf.service \ No newline at end of file