Cuando (re) construyo grandes sistemas en una computadora de escritorio / portátil, le digo make
que use más de un hilo para acelerar la velocidad de compilación, así:
$ make -j$[ $K * $C ]
¿Dónde $C
se supone que indicar el número de núcleos (que podemos suponer que hay un número de un dígito) la máquina tiene, mientras que $K
es algo que puede variar en cada 2
a 4
, dependiendo de mi estado de ánimo.
Entonces, por ejemplo, podría decir make -j12
si tengo 4 núcleos, lo que indica que debo make
usar hasta 12 hilos.
Mi razonamiento es que si solo uso $C
hilos, los núcleos estarán inactivos mientras los procesos están ocupados recuperando datos de las unidades. Pero si no limito el número de subprocesos (es decir make -j
), corro el riesgo de perder el tiempo cambiando de contexto, quedando sin memoria o algo peor . Supongamos que la máquina tiene $M
gigas de memoria (donde $M
está en el orden de 10).
Así que me preguntaba si existe una estrategia establecida para elegir el número más eficiente de hilos para ejecutar.