Dün ROOT paketini kaynaktan derlemeye çalışıyordum . 6 çekirdekli bir canavar makinesinde derlediğim için, devam edip çoklu çekirdekler kullanarak inşa etmeye karar verdim make -j 6. Derleme ilk başta düzgün ve hızlı oldu, ancak bir noktada make% 100 CPU kullanarak tek bir çekirdeğe asıldı.
Bazı googling yaptım ve bu gönderiyi KÖK mesaj panolarında buldum . Bu bilgisayarı kendim kurduğumdan beri, soğutucuyu düzgün bir şekilde uygulamadığımdan ve CPU'nun aşırı ısınmasından falan endişeliydim. Ne yazık ki, işte burada yapıştırabileceğim bir buzdolabı yok. ;-)
lm-sensorsPaketi kurdum ve make -j 6tekrar çalıştırdım , bu sefer CPU sıcaklığını izledim . Yüksek olmasına rağmen (60 C'ye yakın), asla yüksek veya kritik sıcaklığı geçmedi.
Koşmayı denedim make -j 4ama makederleme sırasında bir kez daha asıldım, bu sefer farklı bir noktada.
Sonunda, sadece koşarak derledim makeve iyi çalıştı. Sorum şu: Neden asılıydı? İki farklı noktada durması nedeniyle, bir çeşit yarış durumundan kaynaklandığını tahmin ediyorum, ancak seçeneği makesunduğu için her şeyi doğru sırayla alacak kadar zeki olmalı -j.
-j >1.
$(shell ...), sonuçta girdiyi bekleyenstdin bir komut çalıştırıyordu . Bu, bir değişken boş olduğunda ve komuta hiçbir dosya argümanı iletilmediğinde ortaya çıktı.
strace -p <pid>ve neye / neye baktığını öğrenip göremeyeceğinize bakın. strace sadece sistem çağrılarını gösterecektir (fonksiyon çağrılarını değil), ancak belirli bir dosyaya bakarken veya belirli bir dosyaya bakarken dönerse size değerli bilgiler verebilir.