Ketika saya (kembali) membangun sistem besar pada komputer desktop / laptop, saya meminta make
untuk menggunakan lebih dari satu utas untuk mempercepat kecepatan kompilasi, seperti ini:
$ make -j$[ $K * $C ]
Dimana $C
seharusnya menunjukkan jumlah core (yang dapat kita asumsikan menjadi nomor dengan satu digit) mesin memiliki, sementara $K
adalah sesuatu yang saya bervariasi dari 2
ke 4
, tergantung pada suasana hati saya.
Jadi, misalnya, saya dapat mengatakan make -j12
jika saya memiliki 4 core, yang menunjukkan make
untuk menggunakan hingga 12 utas.
Alasan saya adalah, bahwa jika saya hanya menggunakan $C
utas, inti akan menganggur saat proses sibuk mengambil data dari drive. Tetapi jika saya tidak membatasi jumlah utas (yaitu make -j
) saya berisiko membuang-buang waktu untuk mengubah konteks, kehabisan memori, atau lebih buruk . Mari kita asumsikan mesin memiliki $M
gigs of memory (di mana $M
berada di urutan 10).
Jadi saya bertanya-tanya apakah ada strategi yang ditetapkan untuk memilih jumlah utas yang paling efisien untuk dijalankan.