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 maketergantung 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-sensorspaket dan berlari make -j 6lagi, kali ini memonitor suhu CPU. Meskipun tinggi (mendekati 60 C), tidak pernah melewati suhu tinggi atau kritis.
Saya mencoba berlari make -j 4tetapi sekali lagi makedigantung selama kompilasi, kali ini di tempat yang berbeda.
Pada akhirnya, saya mengkompilasi hanya berjalan makedan 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 makeharus cukup pintar untuk mendapatkan semuanya dalam urutan yang benar karena ia menawarkan -jopsi.
-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.