Less agressively evict idle workers from worker pool

This commit is contained in:
eleksir
2024-04-14 10:27:00 +03:00
parent b2788b9ef1
commit b5bacc5afe

10
main.go
View File

@@ -88,7 +88,8 @@ func main() {
// reniced основная логика.
func reniced(cnf Config) {
pool = pond.New(cnf.MaxWorkers, cnf.NbCapacity)
// Создаём пул со статическим количеством воркеров и длиной очереди неблокируемых задач, равной NbCapacity.
pool = pond.New(cnf.MaxWorkers, cnf.NbCapacity, pond.Strategy(pond.Lazy()))
for {
processList, err := proc.Processes()
@@ -102,7 +103,7 @@ func reniced(cnf Config) {
ok := pool.TrySubmit(func() {
if processName, err := p.Name(); err == nil {
if killSignal := kill[processName]; killSignal != 0 {
switch killSignal {
switch killSignal { //nolint:exhaustive
case syscall.SIGSTOP:
_ = p.SendSignal(killSignal)
@@ -177,7 +178,10 @@ func reniced(cnf Config) {
time.Sleep(time.Millisecond * time.Duration(cnf.LoopDelay))
}
}
// Мы сюда никогда не попадём.
// pool.StopAndWait()
} //nolint:wsl
// sigHandler хэндлер сигналов. Работает на выходе приложения. Держит INT, TERM, QUIT.
func sigHandler() {