Ich habe ein einfaches Programm in Java erstellt:
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Wenn ich dies auf einem Linux-Computer ausführe, wird die CPU zu 100% ausgelastet, das Betriebssystem wird jedoch nicht langsam angezeigt. Wenn ich jedoch unter Windows genau denselben Code ausführe, werden nur etwa 20% der CPU-Auslastung angezeigt.
Ich verwende Oracle JRE unter Windows und OpenJDK 6 unter Linux.
Ich frage mich, ob der Windows-Scheduler Threads zufällig vorbelegt und der Linux-Thread nicht?
100*N cores %
?Antworten:
Standardmäßig
top
läuft Linux unter dem sogenannten IRIX-Modus, der Windows Task-Manager jedoch nicht. Angenommen, Sie haben 4 Kerne:Wenn der IRIX-Modus aktiviert ist, beträgt 1 voll ausgelasteter Kern 100% und 4 Kerne 400%.
Wenn der IRIX-Modus deaktiviert ist, beträgt 1 voll ausgelasteter Kern 25% und 4 Kerne 100%.
Dies bedeutet, dass unter
top
Linux standardmäßig eine Endlosschleife als ~ 100% und unter Windows als ~ 25% angezeigt wird und genau dasselbe bedeutet.Sie können den IRIX-Modus umschalten, während Sie
top
mit Shift+ arbeiten i. Dadurch stimmen die Zahlen überein.quelle