Que signifie le pourcentage de CPU?

11

Je regarde mon pourcentage d'utilisation du processeur par un processus. Comment un processus utilise-t-il seulement 50% de CPU? Un processus n'utilise-t-il pas 100% puis 0%, puis 100%? Ce n'est pas comme toutes les autres instructions est un programme différent.

Anthony D
la source
1
Vous avez un double processeur par hasard?
Certainement une question pour SuperUser.
Noldorin le

Réponses:

16

Il interroge uniquement les totaux environ une fois par seconde. Vous regardez combien de la dernière seconde il a utilisé.

Si vous voyez un processeur assis à 50% pendant un petit moment, ce qui se passe probablement, c'est qu'il utilise 100% d'un processeur dans un système à double processeur.

Joel Coehoorn
la source
4
«un cœur d'un système dual core» - ... ou même un seul processeur avec «hyperthreading».
@ChrisW: fixe.
Joel Coehoorn, le
Les pourcentages d'utilisation du CPU sont souvent rapportés sur 100% pour chaque CPU individuellement, donc la quantité totale de puissance CPU à utiliser dans un système dual core est de 200%, dans un quad core 400%, etc.
David Z
Ils ne le sont pas dans le gestionnaire de tâches Windows.
Joel Coehoorn
11

Techniquement, vous avez raison. À tout moment, le CPU est utilisé ou non utilisé. Mais afficher cela dans un graphique ne serait pas très utile, donc le graphique fait la moyenne de l'utilisation du processeur sur une certaine période de temps, probablement chaque seconde.

Eric Petroelje
la source
3

Le système d'exploitation planifie le processus pour une certaine période de temps. Donc, si le processus est prévu pour (disons) 1 ms sur 10 ms, il utilisera 10% de CPU.

C'est un peu contre-intuitif, car (dans un système à un seul thread et à processeur unique), le processus est en cours d'exécution ou ne fonctionne pas. c'est à dire qu'il utilise 100% ou 0%. Le pourcentage que vous voyez est mesuré sur une fenêtre de temps et est une mesure du système d'exploitation allouant des créneaux horaires à votre processus pour s'exécuter.

Notez que votre processus n'y contribuera pas si vous accédez aux E / S. Donc, si vous faites un calcul énorme, vous enregistrerez 100% (en supposant que rien d'autre ne fonctionne). Si vous attendez ensuite un accès au paquet / disque réseau, etc., le nombre de CPU diminuera, même si votre processus est toujours en cours d'exécution.

Brian Agnew
la source
2

À un niveau très bas, vous avez fondamentalement raison. À tout instant donné, le processeur exécute une instruction pour un processus donné ou ce n'est pas le cas.

Mais votre système d'exploitation se situe entre vos processus et le processeur, ce qui les fait partager du temps. Le pourcentage que vous voyez est le pourcentage du temps de traitement récent que le système d'exploitation a accordé à ce processus.

Tim
la source
1

Il est basé sur le temps moyen. Bien que tous les threads puissent avoir la même parcelle de temps CPU (en fonction de la priorité), les threads peuvent simplement dire "merci mais je suis inactif", et passer leur tour au thread suivant. C'est pourquoi les programmes n'utilisent pas toujours le même% de temps, et la plupart des programmes consomment 0% de CPU, et les programmes qui ont vraiment besoin de CPU peuvent prendre près de 100% de temps pour eux-mêmes.

Pourquoi plafonne-t-il à 50%? Vous avez probablement deux cœurs de processeur et n'en utilisez qu'un.

Ou, comme suggéré, il utilise l'hyperthreading, mais je ne sais pas comment celui-ci se comporte exactement.

Havenard
la source
0

Votre programme peut faire beaucoup d'E / S (lectures / écritures sur disque ou réseau). Cela garderait le programme occupé mais nécessiterait peu ou pas de temps CPU.

Mike Two
la source
0

L'utilisation du système est échantillonnée et moyennée, ce qui est la seule chose sensée à faire.

Par exemple, un enregistrement du temps passé par un processus / thread pendant une seconde est conservé. S'il a passé 1 seconde sur le CPU, c'est 100% CPU (ou 50% si vous avez 2 CPU et ainsi de suite), s'il a passé 100 ms c'est 10% d'utilisation du CPU.

non
la source