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.