Quando (re) construo sistemas grandes em um computador desktop / laptop, eu digo make
para usar mais de um thread para acelerar a velocidade de compilação, assim:
$ make -j$[ $K * $C ]
Onde $C
é suposto para indicar o número de núcleos (que pode assumir a ser um número com um dígito) a máquina tem, ao mesmo tempo $K
é algo que pode variar de 2
que 4
, dependendo do meu humor.
Por exemplo, posso dizer make -j12
se tenho 4 núcleos, indicando o make
uso de até 12 threads.
Minha lógica é que, se eu usar apenas $C
threads, os núcleos ficarão ociosos enquanto os processos estiverem ocupados na busca de dados das unidades. Mas se eu não limitar o número de threads (ou seja make -j
), corro o risco de perder tempo alternando contextos, ficando sem memória ou pior . Vamos supor que a máquina tenha $M
shows de memória ( $M
na ordem de 10).
Então, eu queria saber se existe uma estratégia estabelecida para escolher o número mais eficiente de threads a serem executados.