Wenn ich große Systeme auf einem Desktop- / Laptop-Computer (neu) baue, empfehle ich, make
mehr als einen Thread zu verwenden, um die Kompilierungsgeschwindigkeit wie folgt zu beschleunigen:
$ make -j$[ $K * $C ]
Wo $C
soll die Anzahl der Kerne angegeben werden (von denen wir annehmen können, dass es sich um eine Zahl mit einer Ziffer handelt), über die die Maschine verfügt, während $K
ich je 2
nach 4
Stimmung von bis variieren kann .
So könnte ich zum Beispiel sagen, make -j12
wenn ich 4 Kerne habe, was bedeutet make
, dass bis zu 12 Threads verwendet werden sollen.
Mein Grundprinzip ist, dass, wenn ich nur $C
Threads verwende, Kerne inaktiv sind, während Prozesse damit beschäftigt sind, Daten von den Laufwerken abzurufen. Wenn ich jedoch die Anzahl der Threads nicht beschränke (dh make -j
), besteht die Gefahr, dass ich Zeit damit verschwende, Kontexte zu wechseln, nicht genügend Speicherplatz zur Verfügung zu haben oder noch schlimmer . Nehmen wir an, die Maschine hat $M
Speicherplätze (wobei $M
in der Größenordnung von 10 liegt).
Ich habe mich gefragt, ob es eine etablierte Strategie gibt, um die effizienteste Anzahl von Threads auszuwählen, die ausgeführt werden sollen.