[Buildroot] [PATCH] package-infra: limit the number of // jobs
Nathan Lynch
ntl at pobox.com
Fri May 10 13:09:11 UTC 2013
Hi Yann,
On Fri, 2013-05-10 at 00:03 +0200, Yann E. MORIN wrote:
> From: "Yann E. MORIN" <yann.morin.1998 at free.fr>
>
> The current code spawns as many jobs as up to twice the number of CPUs.
>
> On small-class machines like laptops, with a limitted amount of memory,
> but still a few CPUs (real or hyperthreads), the HDD becomes a bottleneck,
> and it becomes almost impossible to do anythiong else while there is a
> build in progress.
>
> Limit the number of jobs to the number of CPUs plus one.
>
> Even on fast machines with fast HDDs, this settings keeps the machine
> fully busy (for those packages that can build in parallel, of course).
>
> For example, building qemu or the linux kernel kept my hyperthreaded
> hexa Core i7 with 18GiB of RAM, busy at 99% (I never ever managed to
> get 100% even with more jobs, not even 200); while on my hyperthreaded
> dual Core i5 with only 4GiB and a slow HDD, I still topped at 100% CPU,
> while still able to do some work involving the HDD.
>
> Signed-off-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> ---
> package/Makefile.in | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/package/Makefile.in b/package/Makefile.in
> index a449089..a575f17 100644
> --- a/package/Makefile.in
> +++ b/package/Makefile.in
> @@ -11,7 +11,7 @@ HOSTMAKE :=$(shell which $(HOSTMAKE) || type -p $(HOSTMAKE) || echo make)
> # while waiting on I/O.
> ifeq ($(BR2_JLEVEL),0)
> PARALLEL_JOBS:=$(shell echo \
> - $$((2 * `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 1`)))
> + $$((2 + `getconf _NPROCESSORS_ONLN 2>/dev/null || echo 0`)))
You'll need to update/remove the comment preceding this code too...
When I submitted this feature there was some discussion of what the
heuristic should be here. Given your experience I am fine with making
it more conservative, especially since this is the default behavior.
More information about the buildroot
mailing list