Skip to content

Commit

Permalink
add more informative error message for Config.SetPriority, fix #953
Browse files Browse the repository at this point in the history
  • Loading branch information
Slach committed Jul 13, 2024
1 parent b21d3eb commit c0841f5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
8 changes: 7 additions & 1 deletion pkg/config/config_darwin.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@ package config
import (
"github.com/apex/log"
"syscall"
"os"
)

func (cfg *Config) SetPriority() error {
var executable string
if err := syscall.Setpriority(0, 0, cfg.General.CPUNicePriority); err != nil {
log.Warnf("can't set CPU priority %s, error: %v", cfg.General.CPUNicePriority, err)
executable, err = os.Executable()
if err != nil {
log.Warnf("can't get current executable path: %v", err)
}
log.Warnf("can't set CPU priority %s, error: %v, use `sudo setcap cap_sys_nice+ep %s` to fix it", cfg.General.CPUNicePriority, err, executable)
}
return nil
}
10 changes: 8 additions & 2 deletions pkg/config/config_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@ package config
import (
"github.com/apex/log"
"github.com/xyproto/gionice"
"os"
)

func (cfg *Config) SetPriority() error {
var err error
var executable string
if cfg.General.IONicePriority != "" {
var nicePriority gionice.PriClass
executable, err = os.Executable()
if err != nil {
log.Warnf("can't get current executable path: %v", err)
}
if nicePriority, err = gionice.Parse(cfg.General.IONicePriority); err != nil {
return err
}
if err = gionice.SetIDPri(0, nicePriority, 7, gionice.IOPRIO_WHO_PGRP); err != nil {
log.Warnf("can't set i/o priority %s, error: %v", cfg.General.IONicePriority, err)
log.Warnf("can't set i/o priority %s, error: %v, use `sudo setcap cap_sys_nice+ep %s` to fix it", cfg.General.IONicePriority, err, executable)
}
}
if err = gionice.SetNicePri(0, gionice.PRIO_PROCESS, cfg.General.CPUNicePriority); err != nil {
log.Warnf("can't set CPU priority %v, error: %v", cfg.General.CPUNicePriority, err)
log.Warnf("can't set CPU priority %v, error: %v, use `sudo setcap cap_sys_nice+ep %s` to fix it", cfg.General.CPUNicePriority, err, executable)
}
return nil
}

0 comments on commit c0841f5

Please sign in to comment.