phase1: do not exceed nproc build concurrency
authorThibaut VARÈNE <hacks@slashdirt.org>
Thu, 21 Jun 2018 09:04:37 +0000 (11:04 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 26 Jun 2018 20:08:37 +0000 (22:08 +0200)
commit2ad04784a7ea7ab317ac7e0e670996b920fd72ec
tree66e2425701df2c579f65ee744e456b722e544cd3
parent1fe54d5636f86de883f61efd6d3d67aad231c666
phase1: do not exceed nproc build concurrency

Contrary to popular belief, exceeding the number of available CPU cores
in parallel builds (by running e.g. 'make -j$(($nproc+1))' where 'nproc'
is the number of active CPUs on the system) brings no performance benefit,
and may in fact negatively affect build times. This performance hit can
be further aggravated by the extra memory pressure resulting from the
extraneous jobs.

See:
- https://blog.regehr.org/archives/1416
- http://blog.stuffedcow.net/2011/08/hyperthreading-performance/

This is particularly relevant in two distinct cases:
- on hyper-threaded systems, where half of the active CPUs are separate
  threads on the same physical core;
- on virtualized guests systems, where the host physical CPUs are already
  affected by system overhead not visible to the guest.

Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
phase1/master.cfg