Subject: Re: Memory exhaustion issues

From: Sergey Matveev <[email-masked]>
Date: Sun, 8 Sep 2024 13:11:45 +0300

Greetings!

*** goredo [2024-09-05 21:49]:
>Right now redo is free to run anyone of targets 10-19. Let's say it picks target 10. Starts executing until it hits redo-ifchange 100 ... 109. Blocks again. Now, redo can pick any target from 11-19 and 100-109. We have two more processes open.

I see you point, ok. But how can we run targets in parallel? The very
first process has redo-ifchange with 10 targets. It runs one of them.
But it does not know when (or if at all) that running job will run any
other targets further. So if we want to build two jobs in parallel, when
we should run the second job? We do not know if already running one will
run jobs further. If we will wait for its completion, then all spent
time we were running only a single target, without even trying to run
another job, wasted time.

If goredo runs redo-ifchange with thousand of targets, then it runs
runScript() function inside itself for each of those target. But it does
not create additional process until it gets the job token. If we run
with two jobs (-j 2) at most, and if already two jobs are running, then
no additional process will be created, until any of those jobs finishes
and returns job token back. Of course all of that will not work, if
number of allowed jobs is infinite.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: 12AD 3268 9C66 0D42 6967  FD75 CB82 0563 2107 AD8A