Stworzyłem prosty program w java:
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Jeśli uruchomię to na komputerze z systemem Linux, pokazuje 100% użycie procesora, ale nie powoduje spowolnienia systemu operacyjnego. Jeśli jednak uruchomię dokładnie ten sam kod w systemie Windows, pokazuje on tylko około 20% wykorzystania procesora.
Używam Oracle JRE w systemie Windows i OpenJDK 6 w systemie Linux.
Zastanawiam się, czy program planujący Windows losowo wywłaszcza wątki, a Linux nie?
100*N cores %
?Odpowiedzi:
Domyślnie
top
w systemie Linux działa w tak zwanym trybie IRIX, natomiast Menedżer zadań Windows nie. Powiedzmy, że masz 4 rdzenie:Przy włączonym trybie IRIX 1 w pełni wykorzystany rdzeń to 100%, a 4 rdzenie to 400%.
Przy wyłączonym trybie IRIX 1 w pełni wykorzystany rdzeń to 25%, a 4 rdzenie to 100%.
Oznacza to, że domyślnie
top
w Linuksie nieskończona pętla pokaże ~ 100%, a Windows pokaże ją jako ~ 25%, co oznacza dokładnie to samo.Możesz przełączyć tryb IRIX podczas
top
pracy za pomocą Shift+ i. To sprawi, że liczby będą się zgadzać.źródło