Kiedy (ponownie) buduję duże systemy na komputerze stacjonarnym / laptopie, mówię, make
aby użyć więcej niż jednego wątku, aby przyspieszyć kompilację:
$ make -j$[ $K * $C ]
Gdzie $C
ma wskazać liczbę rdzeni (które możemy założyć, aby być liczbą z jednej cyfry) maszyna ma, natomiast $K
jest czymś różnić od 2
celu 4
, w zależności od mojego nastroju.
Na przykład mogę powiedzieć make -j12
, że jeśli mam 4 rdzenie, wskazuję make
na użycie do 12 wątków.
Moje uzasadnienie jest takie, że jeśli używam tylko $C
wątków, rdzenie będą bezczynne, podczas gdy procesy będą zajęte pobieraniem danych z dysków. Ale jeśli nie ograniczę liczby wątków (tj. make -j
) Ryzykuję marnowanie czasu na przełączanie kontekstów, zabraknie pamięci lub gorzej . Załóżmy, że maszyna ma $M
gigantyczną pamięć (gdzie $M
jest rzędu 10).
Zastanawiałem się więc, czy istnieje ustalona strategia wyboru najbardziej wydajnej liczby wątków do uruchomienia.