Quando (ri) costruisco sistemi di grandi dimensioni su un computer desktop / laptop, dico make
di usare più di un thread per accelerare la velocità di compilazione, in questo modo:
$ make -j$[ $K * $C ]
Dove $C
si suppone per indicare il numero di core (che possiamo assumere per essere un numero con una cifra) la macchina ha, mentre $K
è qualcosa che variano da 2
a 4
, a seconda del mio umore.
Quindi, ad esempio, potrei dire make -j12
se ho 4 core, indicando make
di usare fino a 12 thread.
La mia logica è che se uso solo i $C
thread, i core saranno inattivi mentre i processi sono occupati a recuperare i dati dalle unità. Ma se non limito il numero di thread (ovvero make -j
) corro il rischio di perdere tempo a cambiare contesto, a corto di memoria o peggio . Supponiamo che la macchina abbia dei $M
concerti di memoria (dov'è $M
nell'ordine di 10).
Quindi mi chiedevo se esiste una strategia consolidata per scegliere il numero più efficiente di thread da eseguire.