rtems-bsp-builder Job Load Calculation
Chris Johns
chrisj at rtems.org
Mon Apr 6 04:50:45 UTC 2020
On 2020-04-04 12:28, Joel Sherrill wrote:
> On Fri, Apr 3, 2020 at 6:23 PM Joel Sherrill <joel at rtems.org
> <mailto:joel at rtems.org>> wrote:
> On Fri, Apr 3, 2020 at 5:26 PM Chris Johns <chrisj at rtems.org
> <mailto:chrisj at rtems.org>> wrote:
> On 2020-04-04 07:57, Joel Sherrill wrote:
> > How does rtems-bsp-builder calculate the amount of
> parallelism to use?
>
> The option is documented here ...
>
> https://docs.rtems.org/branches/master/user/tools/bsp-builder.html#cmdoption-jobs
>
> and is ...
>
> --jobs
>
> The jobs options where the format is build-jobs/make-jobs.
> The default
> is 1/num-cores where num-cores is the operating system
> reported number
> of cores.
>
>
> What's the definition of build job vs make job?
>
> Is make jobs equivalent to N in make -jN?
>
> > I ask because I have realized that I selected jobs=6/12 on a
> very beefy
> > machine with 12 cores and 32 GB RAM. The main test machine I
> use is 8
> > cores/32 GB RAM. But the slowest ones are old with 4 cores/4
> GB RAM.
> > They are hitting the swap space. All have SSDs.
> >
> > Should I drop the --jobs parameter? Will the script select a
> decent load
> > automatically? The machines are essentially dedicated to testing.
>
> You will need a --jobs option or the machine will not be fully
> loaded.
> You need to find a balance between the number of parallel BSPs
> that are
> built at once and the number of parallel build jobs each BSP
> makes runs.
>
> The critical factor is the amount of bootstrap and configure
> time. This
> is a single core task and if you use the default a lot of the
> build time
> the machine is basically idle.
>
>
> But if you go too high, the number of compiles will swamp a machine
> without a huge amount of memory. So the 4 core/4 GB machines
> probably would be something like --jobs=2/4. if that's two bsp builds
> in parallel with a -j4.
>
> That generally gives you a 2x factor on processes which is close
> to the old school rule of the -jN number should be between 1.5 and
> 2 times the number of cores as long as the RAM and disk subsystem
> could handle it. That tends to overlap IO and computation.
>
> Maybe the default should be (roundup(cores)/2) instead of 1.
>
> Temporarily I may have to add a jobs option to my script and hand-tune
> it to the machines I am testing on.
>
>
> There is no way I know of to automatically find this balance for
> all the
> different types of host machines.
>
>
> Thinking a bit more, I wonder if there could be some named
> build/job ratios. 1/cores, (cores/2)/cores, etc.
As long and we keep the fact one is the number of jobs given to a build
or `make` or whatever for a package. I am happy to review a patch.
Chris
More information about the devel
mailing list