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-sensors
Paketi kurdum ve make -j 6
tekrar ç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 4
ama make
derleme sırasında bir kez daha asıldım, bu sefer farklı bir noktada.
Sonunda, sadece koşarak derledim make
ve 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 make
sunduğ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.