When I (re-)build large systems on a desktop/laptop computer, I tell make
to use more than one thread to speed up the compilation speed, like this:
$ make -j$[ $K * $C ]
Where $C
is supposed to indicate the number of cores (which we can assume to be a number with one digit) the machine has, while $K
is something I vary from 2
to 4
, depending on my mood.
So, for example, I might say make -j12
if I have 4 cores, indicating to make
to use up to 12 threads.
My rationale is, that if I only use $C
threads, cores will be idle while processes are busy fetching data from the drives. But if I do not limit the number of threads (i.e. make -j
) I run the risk to waste time switching contexts, run out of memory, or worse. Let's assume the machine has $M
gigs of memory (where $M
is in the order of 10).
So I was wondering if there is an established strategy to choose the most efficient number of threads to run.