Bir şey oluştururken Bugün erken saatlerde, ben aday olmaya karar make
olarak
$ make -j
belki varsayılan olarak makul bir sınıra cabal
nerede gibi diğer programlarla alışkanlık -j
.
Yaklaşık 20 saniye sonra tüm masaüstüm durdu . Çeşitli aktivite belirtileri arıyorum. Hiç fan dönmüyor. HDD ışığı sabit yeşil renktedir, ancak disk etkinliği duymuyorum. Hmmmmm. 10 dakikalık sessizlikten sonra, nihayet yıllar önce yaptığım ilk tuşa bir yanıt görüyorum ve ayrıca disk çökmesinin çok tanıdık sesini duymaya başladım. 20 dakika sonra yavaş yavaş bu tepkisiz makinede bir terminale doğru ilerlemeye çalışarak, REISUB'u kullandım ve kullandım.
İlk başta, ilgisiz bir masaüstü uygulamasının suçlu olması gerektiğini düşündüm, çünkü uzun zamandır kendimi tam olarak bu tür bir duruma sokmamı önlemek için interaktif bash oturumlarına bellek sınırları koydum! Ama /var/log/syslog
farklı bir hikaye anlatıyor; geride OOM katil bazı ps
dökümlerini şüpheyle edilir paketlenmiş ile c++
ve cc1plus
süreçler!
İşte bu dökümlerden birinin frekans analizi:
Command Number of appearances
'sh' 322
'c++' 321
'cc1plus' 321
'chrome' 27
'make' 27
'bash' 3
all else combined 120
Bu yüzden GNU markası için man sayfasını kontrol ediyorum: (vurgu eklendi)
-j [jobs], --jobs [= jobs] Aynı anda çalıştırılacak işlerin (komutların) sayısını belirtir. Birden fazla -j seçeneği varsa, son seçenek etkilidir. -J seçeneği bağımsız değişken olmadan verilirse, make aynı anda çalışabilecek iş sayısını sınırlamaz.
Ben sorunu yeniden görmek için isteksiz değilim (ben ne zaman bu acı, Doktor bu ...) , ama soruşturmanın sonuçları şu ana kadar bir home run gibi görünüyor: Açıkçası, make -j
ve elde edilen süreçlerin yüzlerce olmalıdır been hang ve disk dayağa neden olur. Bununla birlikte, internette arama yaparken, ona karşı çok fazla uyarı bulamıyorum. Sonuçlara mı atlıyorum?
Mı make -j
bana görünüyor kadar tehlikeli? Eğer öyleyse, neden orada var ve aptalca kanıtlamak için ne yapılabilir?
make
kendi tesislerini kullanın ve yapın export MAKEFLAGS="-j 4"
. Daha fazla araştırma için yazmadan önce okumayı tavsiye ederim . Not: <çekirdek sayısı> + 2 bana neredeyse yirmi yıldır iyi hizmet etti. Gün içinde, Linus bir çekirdek yayınlamadan önce bir final yaptı . make -j128
alias make="make -j4"
ortadan kaldırmak için bir eklemeyi düşünüyorum , ancak yine de olası tüm sonuçları düşünmedim ...-jN