Comment mon ordinateur peut-il utiliser 300% de la puissance de traitement de l'ordinateur?

65

Je joue avec un script et je me suis laissé emporter (il fonctionne toujours et mon ordinateur n’est pas encore mort). Je suis en train d'exécuter 17 itérations du script (avec l'intention de planter mon ordinateur).

En regardant le moniteur d'activité, je constate que chaque processus Python a un pid unique et qu'il semble occuper environ 17 à 20% de ma puissance de traitement ... Comment cela est-il possible? Mon ordinateur a-t-il, comme par magie, augmenté de 200% sa puissance et enfreint les lois de la thermodynamique quelque part?

Entrez la description de l'image ici

Frankenmint
la source
28
300% d'un CPU = 3 CPU.
user253751
7
"Les niveaux de puissance sont 400%"
Nitish
Cela me rappelle tous ces épisodes de Star Trek où les moteurs de Warp sont hors de contrôle ...
Daniel
C'est un overclocking grave !!
Andrew Grimm

Réponses:

101

Sous OS X, comme d’autres * nixes, la charge du processeur est mesurée par cœur de processeur virtuel. Si vous en avez plusieurs, vous pouvez combiner 200% et plus en pleine charge.

Cela diffère de Windows et peut-être de certains autres systèmes, où la charge du processeur est calculée pour chaque processeur (ou processeurs - je ne me souviens pas du comportement de ce dernier lorsqu’il comporte plusieurs processeurs physiques).

Vasfed
la source
21
Cette réponse n'est précise que sur certaines plates-formes! Par exemple, Windows indique la charge totale du processeur, plutôt que le pourcentage d'un seul cœur.
Fabspro
2
Il est intéressant de noter que la représentation de charge décimale (par exemple 0.5 ou 2.4), telle que signalée par exemple par la commande uptime, ne représente pas la somme de chaque pourcentage d'utilisation du core, mais plutôt une estimation du nombre de cœurs dont vous auriez besoin pour traiter chaque requête instantanément. Je ne sais pas dans quelle mesure cette application normalise les valeurs.
Sebb
3
@Sebb la charge moyenne (LA) est le nombre moyen de processus en attente d'exécution, ils peuvent attendre IO, pas nécessaire cpu
Vasfed
3
@ Random832 de linux man - man7.org/linux/man-pages/man1/uptime.1.html : "La charge moyenne du système est le nombre moyen de processus qui sont dans un état exécutable ou ininterruptible. Un processus dans un état exécutable utilise la CPU ou attend d’utiliser la CPU. Un processus à l’état ininterruptible attend un accès E / S, par exemple, un disque. "
Vasfed
4
La moyenne de chargement de @slebetman ne concerne pas le temps de l'unité centrale, mais la longueur de la file d'attente, par exemple, voir serverfault.com/a/524818
Vasfed
81

OS X et Linux et éventuellement d'autres systèmes d'exploitation UNIX (ou plutôt les outils les plus courants sur ces systèmes) affichent l'utilisation du processeur différemment de Windows. Sous Windows, 100% signifie « toutes les ressources de la CPU utilisées». Sous Linux, cela signifie qu’un «thread» (comme dans l’hyper-threading) est complètement occupé. En tant que tel, il peut atteindre au (Number of Threads per Core) * (Number of Cores per CPU) * (Number of CPUs)total.

Bien que cela ne soit pas entièrement lié, un autre fait intéressant: Windows 10 normalise davantage l'utilisation du processeur en utilisant l'état de limitation actuel de celui-ci. Ainsi, un processeur à 2 GHz étranglé à 1 GHz ne sera occupé qu’à 50%.

Daniel B
la source
7
Fait intéressant. :)
Hennes
7
Et avec Turbo Boost, Windows signalera que le processeur tourne à plus de 100%
Martheen Cahya Paulo
Je pense que c'est la méthode BSD, pas la méthode * nix en général. Je vois la même chose sur mon Mac et ma boîte FreeBSD.
JDługosz
1
@ JDługosz Je suis sûr que c'est le cas de Linux, du moins pour certains de ses outils. Je suis assez sûr que topse comporte de cette façon, par exemple.
Reirab
12

Comme indiqué dans plusieurs réponses, Mac indique le pourcentage de processeur de chaque processus sous forme de "pourcentage d'un cœur". Vous devez donc le diviser par le nombre de cœurs.

Si vous ne savez pas combien de cœurs virtuels vous avez, Cmd ⌘ 3 ouvrez la sous-fenêtre Historique de l'UC du moniteur d'activité, où vous pouvez simplement compter les bandes;)

entrez la description de l'image ici

Directement au-dessous de l'endroit où vous avez découpé l'image, vous trouverez les informations dont vous avez besoin pour déterminer rapidement l'utilisation totale réelle du système:

entrez la description de l'image ici

Tetsujin
la source
4
pour de vrai cependant? 24 noyaux ???? J'ai à peine eu 4 :) TIL bien merci pour ce partage !: puu.sh/nNrHU/f2abb55dc7.png
Frankenmint
5
ahh ... ouais - c'est un Mac Pro 5,1 - le dernier des "râpes à fromage". Dual Xeons [+ HT] à 6 cœurs;)
Tetsujin
6

Le moniteur d'activité ne mesure pas réellement la puissance de traitement utilisée par chaque application / processus, il l'estime simplement à l'aide d'un algorithme. Donc, cela peut être inexact ...

En outre, comme le fait remarquer @Vasfed, la consommation de processeur est mesurée par cœur de processeur. Plusieurs cœurs peuvent signifier une utilisation supérieure à 100% ...

Un geek trébuche à l'occasion sur ce phénomène et reste éberlué jusqu'à ce qu'un superutilisateur vienne à son aide ...; D

Rahuldottech
la source
@underscore_d Ouais ... mais quand j'ai répondu, il n'y avait qu'une seule autre réponse. Les autres réponses (certes meilleures) ont été postées plus tard ...
rahuldottech
assez juste, j'aurais dû vérifier les temps passés au niveau des "jours" ... ce n'est pas si mal: p
underscore_d