Catatan soal “make -j”

Untuk kompilasi source code di Linux, biasanya digunakan instruksi make yang melirik Makefile sebagai file konfiguratornya. Proses kompilasi bisa dilakukan secara paralel agar cepat. Jika CPU punya 4C (core) dan 8T (Thread) boleh dipakai make -j4 atau make -j8 sambil dengerin musik atau melakukan aktifitas lain. Tapi jika melulu untuk kompilasi, opsi yang perlu dicoba : make -j.

Proses paralel yang terjadi dengan instruksi make -j =4x total thread. Dalam kasus ini, 4x8T = 32 proses paralel. Bisa jadi memory 32GB akan dibabat habis dalam semenit wkwkwk. Setiap proses ditangani “jobserver” yang butuh RAM. Mana jatah RAM nya? RAM RAM, mana RAM? Kalau tidak, jatah Swap akan dipakai!

Apakah cara ini lebih baik? Bisa iya jika source code terdiri dari ratusan (sampai ribuan) kode-kode kecil yang bisa dikompile secara paralel. Bisa saja tidak pengaruh. Perlu ujicoba dibanding dengan make -j(jumlah core). Bisa jadi tidak terlalu beda soal kecepatan.

CPU hemat daya mode ULV mungkin tidak cocok untuk kerjaan berat dan terus-terusan ala make -j. Contoh ini menggunakan i7-2820QM, CPU jadul pekerja keras generasi 2 lol. Jika menggunakan laptop modern yang punya body kurus kerempeng, CPU dengan TDP 15W plus sistem FAN seadanya mungkin akan keteteran. Throttle akan terjadi jika suhu CPU mendekati Tj (T Junction).

Tentu resource CPU setelah dikurangi untuk keperluan OS dan servis lain, jatah CPU “dibagi adil” untuk setiap proses. Yang menentukan jatah resource CPU ya internal make.

Jobserver yang menangani bagian source code besar dapat jatah lebih banyak dibanding yang menangani source kecil.

Dari besar RAM 32GB, hampir dipakai semua! Bahkan swap juga dipakai.

Sebagai standar kompilasi paralel biasanya digunakan maxjob sebanyak jumlah core (baik fisik maupun virtual). Sedang Standar laptop santai adalah make saja.

Tapi siapa tau, laptop/PC Anda dididik ala sparta! Gunakan semua resource CPU. Tancap aja pakai make -j 🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s