Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Nov 2006 16:30:02 -0800
From:      Jason Evans <jasone@FreeBSD.org>
To:        John Birrell <jb@what-creek.com>
Cc:        arch@freebsd.org
Subject:   Re: Proposed change to make -j
Message-ID:  <45663D0A.7010508@FreeBSD.org>
In-Reply-To: <20061123232035.GA56985@what-creek.com>
References:  <20061123232035.GA56985@what-creek.com>

next in thread | previous in thread | raw e-mail | index | archive | help
John Birrell wrote:
> Currently 'make -j' reports an error if the number of jobs
> isn't specified.
> 
> I'd like to change make(1) to treat -j (without a number) as
> meaning "set the number of jobs to the number of processors".
> 
> On sun4v, each processor isn't too powerful and system performance
> is only decent when you use all the processors - 32 in my case.
> 
> I've been working on a parallel 'make release' process which
> would benefit from having -j set by default. At the moment I
> set MAKEFLAGS=j32 in my environment and this achieves the desired
> result, but -j would be more general.

For gmake, a bare -j says to not limit the number of simultaneous jobs. 
  I don't think that it's a good idea to use a flag name that already 
has a different (and potentially useful) meaning for gmake.

I have some concern that no matter what number of jobs you decide to run 
simultaneously when your proposed flag is specified (N, N+1, 2N, etc., 
where N is the number of CPUs), that choice will not be universally 
useful, since the best choice of argument to -j depends on what 'make' 
is building.  Might it be better to use sysctl(8) in your command line?

	make -j `sysctl -n hw.ncpu`

Jason



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45663D0A.7010508>