J'ai créé un programme simple en Java:
public static void main(String[] args) throws InterruptedException {
while (true)
;
}
Si j'exécute cela sur une machine Linux, cela montre 100% d'utilisation du processeur, mais ne fait pas apparaître le système d'exploitation lentement. Cependant, si j'exécute exactement le même code sous Windows, il ne montre qu'environ 20% d'utilisation du processeur.
J'utilise Oracle JRE sous Windows et OpenJDK 6 sous Linux.
Je me demande si le planificateur de Windows préempte les threads de manière aléatoire et Linux non?
Par défaut, top
sous Linux s'exécute en mode dit IRIX, contrairement à Windows Task Manager. Disons que vous avez 4 cœurs:
Lorsque le mode IRIX est activé, 1 cœur entièrement utilisé est à 100% et 4 cœurs à 400%.
Avec le mode IRIX désactivé, 1 cœur entièrement utilisé est à 25% et 4 cœurs à 100%.
Cela signifie que par défaut, top
sur Linux affichera une boucle infinie comme ~ 100% et Windows l'affichera comme ~ 25%, et cela signifie exactement la même chose.
Vous pouvez basculer le mode IRIX pendant que top
fonctionne avec Shift+i. Cela fera correspondre les chiffres.