[distcc] Alternatives to -j parallel

Richard Beare richard.beare at gmail.com
Tue Sep 6 11:04:20 UTC 2016

I'll have a look at that - perhaps ensuring LD is set correctly will be


On Tue, Sep 6, 2016 at 8:56 PM, Łukasz Tasz <lukasz at tasz.eu> wrote:

> I think I got your point,
> playing with MKFLAGS with cmake will be a tricky part and complex at the
> end.
> I would recommend to use distcc and limit --localslots=1 and assure that
> linking starts with distcc at the begining.
> Make sure that your LD variable is prefixed with distcc.
> In my opinion it will be the easiest way.
> In case of pure make it is very easy, enough is to call $MAKE MKFLAGS= and
> -j then is 1, but it is not a case when talking about cmake buildsystem.
> regards
> L.
> Łukasz Tasz
> 2016-09-06 11:47 GMT+02:00 Richard Beare <richard.beare at gmail.com>:
>> Thanks,
>> Here's another way of describing my problem.
>> I have a configuration that allows me to substitute distcc for cc/cxx.
>> This works fine, and I can distribute compilation across the 4 nodes
>> available with circleCI, when I supply a -j N option to make.
>> However, it appears that the linking (ld) phase is carried out using a
>> separate mechanism - i.e. not from distcc. Thus the requirement of only one
>> job on the localhost is not respected by the link phase because distcc
>> isn't executing the linker. In the circleCI system this leads to problems
>> with memory.
>> I'd therefore like to be able to tell distcc to be parallel without
>> telling the rest of the makefile also being parallel. Obviously this would
>> require that there is some other mechanism (besides -j) - perhaps an
>> environment variable - that triggers parallel behaviour in distcc.
>> In short - the cc part of distcc works fine. However, in this build
>> system, ld is not being run from distcc. I don't want multiple ld jobs
>> running, so I'd like to be able to run make -j1 but instruct distcc to use
>> a higher level of j.
>> On Tue, Sep 6, 2016 at 6:42 PM, Łukasz Tasz <lukasz at tasz.eu> wrote:
>>> Could you please describe more what you would like to achieve?
>>> -j does net decide it compilation will be done with distcc or not,
>>> -j must take into consideration how many distcc agent you have.
>>> you have two dimensions, one is if distcc should be used, and second is
>>> about parallelism.
>>> first dimension is controlled in build system, second can be controlled
>>> by build system, a but also may be limited by distcc.
>>> localslots and localslots_cpp controls parallelism from distcc point of
>>> view.
>>> regards
>>> Lukasz
>>> Łukasz Tasz
>>> RTKW
>>> 2016-09-06 4:11 GMT+02:00 Richard Beare <richard.beare at gmail.com>:
>>>> Hi,
>>>> I'm having a few problems using distcc for a large project on the
>>>> circleCI infrastructure, which has 4GB limits for the compilation hosts.
>>>> Occasionally I see this limit being exceeded when 2 link jobs run on
>>>> the main server at the same time. This happens despite the --localslots=1
>>>> and localhost/1 settings in the distcc hosts file.
>>>> I suspect the problem is that the large and complex cmake project that
>>>> is being built has its own link mechanism. So my question is whether there
>>>> is an alternative way to pass the parallel option to distcc besides make
>>>> -jN? This would allow the other compile steps that might not be under
>>>> distcc control to run serially on the local host.
>>>> Thanks
>>>> __
>>>> distcc mailing list            http://distcc.samba.org/
>>>> To unsubscribe or change options:
>>>> https://lists.samba.org/mailman/listinfo/distcc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.samba.org/pipermail/distcc/attachments/20160906/6628f7e6/attachment.html>

More information about the distcc mailing list