web-dev-qa-db-fra.com

Comment le temps CPU et l'utilisation CPU sont-ils les mêmes?

Dans la page Wikipedia pour temps CP , il est dit

Le temps CPU est mesuré en ticks d'horloge ou en secondes. Souvent, il est utile de mesurer le temps processeur en pourcentage de la capacité du processeur, ce qui est appelé l'utilisation du processeur.

Je ne comprends pas comment une durée peut être remplacée par un pourcentage. Quand je regarde top, n'est-ce pas %CPU dites-moi que MATLAB utilise 2.17 de mes cœurs?

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
18118 jasl      20   0 9248400 261528  78676 S 217.2  0.1   8:14.75 MATLAB      

Question

Afin de mieux comprendre ce qu'est l'utilisation du processeur, comment puis-je calculer moi-même l'utilisation du processeur?

23
Jasmine Lognnes

Le temps CPU est alloué en discret tranches de temps (ticks). Pour un certain nombre de tranches de temps, le CPU est occupé, d'autres fois ce n'est pas le cas (ce qui est représenté par le processus inactif). Dans l'image ci-dessous, le CPU est occupé pour 6 des 10 tranches de CPU. 6/10 = 0,60 = 60% du temps occupé (et il y aurait donc 40% de temps inactif).

enter image description here

Un pourcentage est défini comme "un nombre ou un taux qui est exprimé comme un certain nombre de parties de quelque chose divisé en 100 parties". Donc, dans ce cas, ces parties sont des tranches de temps discrètes et le quelque chose est des tranches de temps occupé par rapport aux tranches de temps inactif - le taux de tranches de temps occupé à inactif.

Étant donné que les processeurs fonctionnent en GHz (milliards de cycles par seconde). Le système d'exploitation découpe ce temps en unités plus petites appelées ticks. Ils ne font pas vraiment 1/10 de seconde. Le taux de ticks dans windows est 10 millions de ticks en une seconde et sous Linux c'est sysconf(_SC_CLK_TCK) (généralement 100 ticks par seconde).

Dans quelque chose comme top, les cycles CPU occupés sont ensuite décomposés en pourcentage de choses comme le temps utilisateur et le temps système. Dans top sur Linux et perfmon sous Windows, vous obtiendrez souvent un affichage qui dépasse 100%, car le total est de 100% * the_number_of_cpu_cores.

Dans un système d'exploitation, c'est le travail de l'ordonnanceur d'allouer ces tranches précieuses aux processus, c'est donc l'ordonnanceur qui le signale.

32
Kyle Brandt

Le temps CPU est le temps pendant lequel le processus utilise le CPU - le convertir en pourcentage se fait en divisant par la quantité de temps réel écoulé.

Donc, si j'ai un processus qui utilise 1 seconde de temps CPU sur une période de 2 secondes, il utilise 50% d'un CPU.

Dans le cas de votre processus MATLAB, 217% indique qu'il a utilisé 2,17 secondes de temps processeur par seconde au cours du dernier intervalle d'échantillonnage - en fait, monopoliser 2 cœurs de processeur et en prendre un tiers.

15
Shane Madden