Kemarin saya mencoba mengkompilasi paket ROOT dari sumber. Karena saya mengkompilasinya pada mesin monster 6 inti, saya memutuskan untuk terus maju dan membangun menggunakan banyak core make -j 6
. Proses kompilasi berjalan mulus dan sangat cepat pada awalnya, tetapi pada beberapa titik make
tergantung menggunakan CPU 100% hanya pada satu inti.
Saya melakukan beberapa googling dan menemukan posting ini di papan pesan ROOT. Karena saya membangun komputer ini sendiri, saya khawatir bahwa saya belum menerapkan heatsink dengan benar dan CPU terlalu panas atau semacamnya. Sayangnya, saya tidak punya lemari es di sini di tempat kerja sehingga saya bisa memasukkannya. ;-)
Saya menginstal lm-sensors
paket dan berlari make -j 6
lagi, kali ini memonitor suhu CPU. Meskipun tinggi (mendekati 60 C), tidak pernah melewati suhu tinggi atau kritis.
Saya mencoba berlari make -j 4
tetapi sekali lagi make
digantung selama kompilasi, kali ini di tempat yang berbeda.
Pada akhirnya, saya mengkompilasi hanya berjalan make
dan bekerja dengan baik. Pertanyaan saya adalah: Mengapa menggantung? Karena fakta bahwa itu berhenti di dua tempat yang berbeda, saya kira itu karena semacam kondisi balapan, tetapi saya akan berpikir make
harus cukup pintar untuk mendapatkan semuanya dalam urutan yang benar karena ia menawarkan -j
opsi.
-j >1
.
$(shell ...)
akhirnya menjalankan perintah yang menunggu input daristdin
. Ini disebabkan ketika sebuah variabel kosong dan tidak ada argumen file yang diteruskan ke perintah.
strace -p <pid>
dan lihat apakah Anda bisa mencari tahu apa yang sedang dilihat / untuk. strace hanya akan menampilkan syscalls (bukan panggilan fungsi), tetapi itu masih bisa memberi Anda informasi berharga jika itu berputar sambil melihat atau mencari file tertentu.