Jika menggunakan make, masalah dengan -j
. Dari man make
:
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously.
If there is more than one -j option, the last one is effective.
If the -j option is given without an argument, make will not limit the
number of jobs that can run simultaneously.
Dan yang paling penting, jika Anda ingin membuat skrip atau mengidentifikasi jumlah inti yang Anda miliki (tergantung pada lingkungan Anda, dan jika Anda berjalan di banyak lingkungan, ini dapat banyak berubah) Anda dapat menggunakan fungsi Python di mana-mana cpu_count()
:
https://docs.python.org/3/library/multiprocessing.html#multiprocessing.cpu_count
Seperti ini:
make -j $(python3 -c 'import multiprocessing as mp; print(int(mp.cpu_count() * 1.5))')
Jika Anda bertanya mengapa 1.5
saya akan mengutip suara bising pengguna dalam komentar di atas:
Angka 1,5 adalah karena masalah ikatan I / O yang tercatat. Ini adalah aturan praktis. Sekitar 1/3 dari pekerjaan akan menunggu untuk I / O, sehingga pekerjaan yang tersisa akan menggunakan inti yang tersedia. Angka yang lebih besar dari inti lebih baik dan Anda bahkan bisa mencapai 2x.