Neden “Thread.sleep” olmadan “while (true)” Linux'ta% 100 CPU kullanımına neden oluyor, Windows'da neden olmasın?


158

Java basit bir program oluşturduk:

public static void main(String[] args) throws InterruptedException {
    while (true) 
        ;
}

Bunu bir Linux makinesinde çalıştırırsam,% 100 CPU kullanımı gösterir, ancak işletim sisteminin yavaş görünmesine neden olmaz. Ancak, aynı kodu Windows'ta çalıştırırsam, yalnızca yaklaşık% 20 CPU kullanımı gösterir.

Windows'ta Oracle JRE ve Linux'ta OpenJDK 6 kullanıyorum.

Windows zamanlayıcı iş parçacıkları rastgele preempt olup olmadığını merak ediyorum ve Linux değil mi?


5
İşletim Sistemi Görev Zamanlaması'na bağlıdır.
Subhrajyoti Majumder

52
kaç tane çekirdeğiniz var? TÜM çekirdekler meşgul olduğunda Windows görev yöneticisi% 100 rapor verir. Linux aracınız benzer bir şey yapıyor mu veya 1 çekirdeğin değerinde% 100 rapor veriyor 100*N cores %mu ve tüm çekirdekler meşgul olduğunda, öyle mi?
13'te

2
4 çekirdeğim var ve linux üzerinde sistem izleme aracını kullanıyorum
Maniek

1
@Quoi Pek değil. Bu program çalışmakta olan tek şeyse, iş parçacığı hem Windows hem de Linux'ta kesintisiz çalışacaktır.
David Heffernan

Yanıtlar:


387

Varsayılan olarak, topLinux'ta IRIX modunda çalışır, ancak Windows Görev Yöneticisi çalışmaz. Diyelim ki 4 çekirdeğiniz var:

  • IRIX modu açıkken, 1 tam olarak kullanılan çekirdek% 100 ve 4 çekirdek% 400'dür.

  • IRIX modu kapalıyken, tam olarak kullanılan 1 çekirdek% 25 ve 4 çekirdek% 100'dür.

Bu top, Linux'ta varsayılan olarak ~% 100 olarak sonsuz bir döngü göstereceği ve Windows ~% 25 olarak göstereceği anlamına gelir ve aynı şey anlamına gelir.

Ederken IRIX modunu geçiş yapabilirsiniz topile çalışan Shift+ i. Bu sayıların eşleşmesini sağlar.


2
Evet - '4 + 4' i7'de (hiper iş parçacığı), önemsiz bir CPU döngüsü% 17-18 civarında çıkıyor.
Martin James

Neden cevap 150UPs hala olsa onun puanı 700's ... SO bug ?? : - /
uday

5
@uDaY, günde maksimum 200 temsilci olduğu için, bundan sonraki herhangi bir oylama sayılmaz, kabul edilen cevaplar hala olacaktır.
2013

3
@thatotherguy Tam olarak shift-I'ye ne zaman geçmeli? Top çalışırken?
Geek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.