Quando ricostruisco sistemi di grandi dimensioni su un computer desktop / portatile, dico a make
di utilizzare più thread per accelerare la velocità della compilation, in questo modo:
$ make -j$[ $K * $C ]
Dove $C
dovrebbe indicare il numero di core (che possiamo assumere per essere un numero con una cifra) la macchina ha, mentre $K
è qualcosa che differisco da 2
a 4
, a seconda del mio umore.
Quindi, ad esempio, potrei dire make -j12
se ho 4 core, indicando a make
di usare fino a 12 thread.
Il mio fondamento logico è che, se utilizzo solo $C
thread, i nuclei saranno inattivi mentre i processi sono occupati nel recupero dei dati dalle unità. Ma se non limito il numero di thread (cioè make -j
) corro il rischio di perdere tempo a cambiare contesto, esaurire la memoria, o peggio . Supponiamo che la macchina abbia $M
di memoria (dove $M
è nell'ordine di 10).
Quindi mi chiedevo se esiste una strategia consolidata per scegliere il numero più efficiente di thread da eseguire.